(寻找下面的实际例子)
大家好,
我试图把它变成一个查询:
Cakephp虽然很聪明,却收集了我称之为find的项目的所有匹配的“has many”对象(换句话说,第二个表中使用它的ID的所有对象)。但是,这些返回的对象也有第二个对象,它们受到“有很多”关系。我还想收集这些对象的信息。是否可以在一个查询中执行此操作?
实际例子:
House
- 有很多 - > People
< - 有很多 - Employer
行:
id
,address
人:
name
,age
,house_id
,employer_id
雇主:
id
,name
,location
当我请求house
时,它会返回people
中生活的所有house
。我想为每个employers
person
这一次可能吗?
答案 0 :(得分:1)
在人物模型中使用以下代码:
public $belongsTo = array('Employer' => array(
'className' => 'Employer',
'foreignKey' => 'employer_id'
)
);
现在尝试请求房子。它将返回您想要的相同数据。
答案 1 :(得分:0)
我实际上发现了一个略显明显,略显丑陋的解决方案。缺点是它似乎正在执行几个不必要的查询(例如收集每个House
的{{1}}记录。一个更好的解决方案将不胜感激。
我没有使用Person
,而是使用House
。
因此,如果查询为Person
,则会变为$this->House->findById($house_id)
。结果不如从$this->Person->findAllByHouseId($house_id)
搜索那样好,但Cake会收集所有相关的House
记录,还会收集Person
记录和相关的House
记录。
我希望这对其他人有用。我仍在寻找更优雅的解决方案,但这肯定是有用的。