假设您在Laravel中拥有三种口才模型:
Person
- id
- name
Object
- id
- category_id
- name
Category
- id
- name
Person
和Object
之间存在多对多关系(一个Person
可以属于许多Objects
,一个Object
可以属于许多{ {1}},并且People
和Object
之间存在多对一的关系(许多Category
属于一个Objects
)。
要获取Category
的{{1}}的数量,您可以执行类似的操作
Objects
我想拥有的是每个Person
中每个$ Person::withCount('objects')->first()
=> App\Person {
id: 1,
name: 'John Doe',
objects_count: 5,
}
的{{1}}的数量,同时仍然具有Objects
个实体。
我不确定Eloquent是否(或应该)在单个DB语句中执行此操作,因为通常Category
会为alle实体生成一条附加语句,并具有一个Person
这样的where子句
如果我必须没有Person
实体,则可以执行一条SQL语句,该语句给出所需的结果:
with()
这给了我一个集合,我很可能可以将其重新映射到WHERE id IN (1, 2, 3, ...)
id:
Person
我现在是否还有其他更优雅的方式?