0

仅当 $data 查询表 [id] 在第二个表中具有匹配的 [sub_id] 时,我一直被 CakePHP 难倒如何在 CakePHP 中查询 DB 并将内容返回给 $data

标准查询:

$data = $this->Table1->findAll(array("Table1.deleted" => "0"), null, "Table1.id DESC", 25, null, 1);

但是我只想在 ['table2']['sub_id'] 中找到 $data['Table1']['id'] 时将值放入 $data

谢谢!

4

3 回答 3

1

如果您的关系设置正确,它应该会自动执行此操作。您可以粘贴表 1 和表 2 的模型关系设置吗?

于 2009-01-13T06:38:35.787 回答
0

在模型中,在关系数组中添加:

$hasMany = array(
.....
'required' => true
....
);

这应该使它在 sql 中进行内部联接而不是左联接。希望这可以帮助。

于 2009-03-14T01:53:06.190 回答
0

超新星 -

请为我澄清一件事:您写道,当在 table2.sub_id 中找到 table1.id 时,您只想将值放入 $data。你的意思是 table2.sub_id 是一个外键,链接到 table1?

我认为 Beau 是对的——如果您正确链接了模型,使用 HABTM 或 belongsTo 等变量,findAll 应该自动从 table2 中提取相关记录。

最后需要注意的是模型关联受 Model->recursive 值的影响。如果您在代码中更改了递归属性的值,它将改变模型关系在给定查询中允许的深度。

于 2009-01-13T16:56:28.927 回答