这是我的型号:
User hasmany Photos
Photo belongto User
非常简单的一对多关系。
在控制器中,我想看到一个用户的所有照片。
$this->User->id = $id
$this->User->Photos->read()
这不起作用,我知道如果我使用
$cond=array(
'conditions' => array('UserId =' => $id),
'recursive' => -1
);
$relationsFrom = $this->User->Photos->find('all', $cond);
我可以在不使用带有条件的find的情况下执行此查询吗?当我链接模型时,我会给出外键。为什么我必须再次写作?我记得在RubyonRails用户中,照片给了我用户的所有照片。
感谢
为什么不使用Containable
行为?它将以您想要的方式为您选择相关的型号。它将根据您的关系选择相关字段
我可以告诉你为什么它是这样工作的,但不能告诉你为什么设计是这样工作:
对象$this->User->Photos
是Photo
模型类的一个实例,它对引用它的User
模型没有特殊引用。您可以像使用new Photo
一样使用$this->User->Photos
。
CakePHP的数据库层围绕着一些方法,这些方法将查询编码为数组,将它们转换为SQL,并将结果作为数据数组返回。它不像某些ORM那样构建查询对象。