如何获得CakePHP的多对多结果

时间:2011-03-24 15:39:25

标签: php cakephp

我使用images_units连接表在模型Image和Units之间存在多对多关系。

如何将此查询翻译为cakePHP find()?

SELECT * FROM Image, Units, images_units WHERE images_units.unit_id = 29;

现在我在Image-> find('all',$ params)上尝试find();没有运气。

2 个答案:

答案 0 :(得分:1)

直接从CakePHP手册:

$this->Image->bindModel(array('hasOne' => array('ImagesUnit')));
$this->Image->find('all', array('fields' => array('Image.*'),'conditions' => array('ImagesUnit.unit_id' => 29)));

当然,您需要在模型中定义HABTM关联。 See the whole section on HABTM了解如何使用它。

答案 1 :(得分:0)

在图像模型中,添加以下代码:

$hasAndBelongsToMany = 'Unit';

find()控制器中的Images应如下所示:

$this->Image->find('all', array('conditions'=>array('Unit.id'=>29)));

仍然不太确定这是你正在寻找的但我认为这是正确的。