我有一个与模型Y相关的模型X. X有很多Y. Y具有属性“status”。 我想找到所有X,使得与X相关的ALL Y的状态等于“active”,即所有Y.status ==“active”。
这是一个简化的架构:
0 .....测试
1 ..... 2
0 ..... .....活性0
1 ..... inactive..0
2个.....活性.... 1个
3 .....活跃...... 1
我希望我的查询返回ID为1的x,因为它的相关Y记录都是活动的。我不希望它返回ID为0的x,因为它的Y记录都没有激活。
我尝试过使用连接查询,但是他们通过返回两个X继续返回意外的结果。 我正在使用Cakephp 2.2。
答案 0 :(得分:0)
$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')
));