1

(在下面寻找一个实际的例子)

大家好,

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


实际例子:

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

房子:
id,address

人:
name, age, house_id,employer_id

雇主:
id, name,location

当我请求时house,它返回所有people生活在house. 我想employers为每个person

有可能一发吗?

4

2 回答 2

1

在您的 Person 模型中使用以下代码:

public $belongsTo = array('Employer' => array(
                                              'className' => 'Employer', 
                                              'foreignKey' => 'employer_id'
                                              )
                          );

现在尝试请求房子。它将返回您想要的相同数据。

于 2012-07-16T11:06:31.553 回答
0

我实际上发现了一个稍微明显,略显丑陋的解决方案。缺点是它似乎正在执行几个不必要的查询(例如收集House每个单个的记录Person)。一个更好的解决方案将不胜感激。

House我没有使用,而是使用Person.

所以如果查询是$this->House->findById($house_id)它变成了$this->Person->findAllByHouseId($house_id). 结果不像搜索 from 那样是一个数组House,但是 Cake 收集了所有相关Person记录,并且还收集了House记录和相关Employer记录。

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

于 2012-07-15T23:49:11.567 回答