我有桌子:categories
HABTM sculptures
有多个images
CategoriesController#find()
的产生如下数组:
array(
'Category' => array(
'id' => '3',
'name' => 'Modern',
),
'Sculpture' => array(
(int) 0 => array(
'id' => '25',
'name' => 'Ami',
'material' => 'Bronze',
'CategoriesSculpture' => array(
'id' => '18',
'category_id' => '3',
'sculpture_id' => '25'
)
),
(int) 1 => array(
'id' => '26',
'name' => 'Charis',
'material' => 'Bronze',
'CategoriesSculpture' => array(
'id' => '19',
'category_id' => '3',
'sculpture_id' => '26'
)
)
)
)
如果有可能,我希望能够在阵列中获得与雕塑相关的图像吗?
答案 0 :(得分:1)
执行此操作的简单方法是在调用find()
(example)时将递归设置为2。这将告诉find()
连接所有关联的模型以及与关联模型关联的模型。
但是,这种方法可能会导致数据集变得非常大,因此更好的方法是在包含更深层关联时使用containable behavior。
答案 1 :(得分:0)
使用CakePHP的Containable Behavior。阅读完并遵循说明后,您的查找应如下所示:
$this->Category->find('all', array(
'contain' => array(
'Sculpture' => array(
'Image'
)
)
));
在您的类别模型中,您需要:
public $actsAs = array('Containable');
public $recursive = -1; //can set this in many places, but it must be -1 for the Containable find to work.