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


Cakephp querying Model by strict associated data

我有一个与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')
        ));