我有一个与Model Y相关联的模型X。X 有许多 Y。Y 具有属性"状态"。我想找到所有 X,以便与 X 关联的所有 Y 的状态等于"活动",即所有 Y.status =="活动"。
下面是一个简化的架构:
十
同上....名字
0.....测试
1.....二
Y
同上....地位。。。。x_id
0...活跃.....
01...非活动..
02...活跃....
13...活跃....1
我希望我的查询返回 ID 为 1 的 x,因为它的两个关联的 Y 记录都处于活动状态。我不希望它返回 ID 为 0 的 x,因为它的两个 Y 记录都不是活动的。
我尝试使用连接查询,但它们通过返回两个 X 来不断返回意外结果。我正在使用 Cakephp 2.2。
$data = TableRegistry::get('Y')->find()->where(['x_id' => 1);
//with assosiation
$data = TableRegistry::get('Y')->find()->where(['x_id' => 1])->contain(['X']);
完整的文档在这里 http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html
编辑
要按状态搜索,您可以在 where() 中添加搜索参数
$data = TableRegistry::get('Y')
->find()
->where(['x_id' => 1, 'status' => 'active'])
->contain(['X']);
使用 CakePHP 2.x
$data = $this->Y->find('all',
array(
'conditions'=>array('x_id'=>1,'status'=>'active'),
'contain' => array('X')
));