Cakephp通过严格的关联数据查询模型

时间:2016-07-10 21:29:25

标签: php cakephp associations models cakephp-2.2

我有一个与模型Y相关的模型X. X有很多Y. Y具有属性“status”。 我想找到所有X,使得与X相关的ALL Y的状态等于“active”,即所有Y.status ==“active”。

这是一个简化的架构:

X

ID ....名称

0 .....测试
1 ..... 2

ý

ID .... ....状态X_ID

0 ..... .....活性0
1 ..... inactive..0
2个.....活性.... 1个
3 .....活跃...... 1

我希望我的查询返回ID为1的x,因为它的相关Y记录都是活动的。我不希望它返回ID为0的x,因为它的Y记录都没有激活。

我尝试过使用连接查询,但是他们通过返回两个X继续返回意外的结果。 我正在使用Cakephp 2.2。

1 个答案:

答案 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')
        ));