考虑到以下表结构,我如何将 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
)0x2143994groupBy
以避免重复连接。 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/