gpt4 book ai didi

php - CakePHP 模型协会,条件不工作

转载 作者:行者123 更新时间:2023-11-29 21:14:28 25 4
gpt4 key购买 nike

我有三个表“项目”、“任务”和“标签”。 Projects.id 是第一个表的主键,Tasks.id 是第二个表的 PK,Tags.id 是第三个表的 PK。

项目模型代码片段

public $primaryKey = 'id';
public $hasMany = array(
'Tasks' => array('className' => 'Tasks','foreignKey' => 'project_id')
);

任务模型代码片段

public $primaryKey = 'id';
public $hasMany = array(
'Tags' => array('className' => 'Tags','foreignKey' => 'task_id')
);

下面的查询返回一些意外的结果。

$data = $this->Projects->find('all', array(
'recursive' => 2,
'contain' => array(
'Tags' => array(
'conditions' => array('Tags.tag_name =' => "Driver")
)
)
));

我得到的响应数据是

 [Projects] => Array
(
[id] => 1
[project_id] => 1234
[project_name] => XYZ
)

[Tasks] => Array
(
[0] => Array
(
[id] => 1
[project_id] => 1
[task_id] => 12
[task_name] => task1
[Tags] => Array
(
[0] => Array
(
[id] => 1
[task_id] => 1
[tag_id] => 3444
[tag_name] => Driver
)

)

)

[1] => Array
(
[id] => 2
[project_id] => 1
[task_id] => 343242
[task_name] => task2


[Tags] => Array
(
)

)

看到我什至收到了没有标签为司机的任务。我如何排除没有标签驱动程序的任务?

换句话说,task1 确实有 Tag 作为驱动程序,所以应该在那里。但是task2没有任何标签,即使返回数据包含task2。如何解决?

最佳答案

您无法根据子模型的条件限制主模型或父模型的结果,因为“包含”实际上为每个包含模型创建单独的查询。

要获得正确的结果,您必须使用 join。

关于php - CakePHP 模型协会,条件不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36080902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com