gpt4 book ai didi

sql - Laravel Eloquent 连接表和计数相关

转载 作者:行者123 更新时间:2023-12-04 16:24:24 25 4
gpt4 key购买 nike

考虑到以下表结构,我如何将 join 与 Eloquent 一起使用:

我有一个属性表

---------------------
ID | Name
---------------------
1 | Property Name

比我有房间
----------------------
RoomID | Property
----------------------
A-212 | 1
----------------------
F-1231 | 1

这里属性是外键
比我想得到所有的属性(property)并计算他们有多少个房间

检索所有的查询看起来像
   class PropertiesRepository extends EloquentBaseRepository implements PropertiesInterface
{

use TaggableRepository;

/**
* Construct
* @param Properties $properties
*/
public function __construct( Properties $properties )
{
$this->model = $properties;
}
/**
* Get all properties joining rooms
* @return Properties
*/
public function getAll()
{
return $this->model->get();
}
}

如何扩展此查询以获得所需的结果?

最佳答案

这更像是一个 MySQL join+group+select 技巧,其中包括以下步骤。

  • 加入你的关系表(如果你想用 join 排除行,请使用 RoomsCount=0 ,否则使用 leftJoin )
  • 使用 groupBy通过 primaryKey 以避免重复连接。
  • 选择 count连接表
  •     $this->model->leftJoin('Rooms', 'Properties.ID', '=', 'Rooms.Property')
    ->selectRaw('Properties.*, count(Rooms.RoomID) as RoomsCount')
    ->groupBy('Properties.ID')
    ->get();

    关于sql - Laravel Eloquent 连接表和计数相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24648554/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com