在Cakephp中,如果我找到一个对象并返回“有很多”项,那么如何收集那些“有很多”项目所属的对象?

时间:2012-07-15 20:23:30

标签: cakephp cakephp-2.0 relationship

(寻找下面的实际例子)

大家好,

我试图把它变成一个查询:
Cakephp虽然很聪明,却收集了我称之为find的项目的所有匹配的“has many”对象(换句话说,第二个表中使用它的ID的所有对象)。但是,这些返回的对象也有第二个对象,它们受到“有很多”关系。我还想收集这些对象的信息。是否可以在一个查询中执行此操作?


实际例子:

House - 有很多 - > People< - 有很多 - Employer

行:
idaddress

人:
nameagehouse_idemployer_id

雇主:
idnamelocation

当我请求house时,它会返回people中生活的所有house。我想为每个employers

获取每个person

这一次可能吗?

2 个答案:

答案 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记录。

我希望这对其他人有用。我仍在寻找更优雅的解决方案,但这肯定是有用的。