我的Cakephp应用程序以下具有关系的模型
if(offset != 21900)
{
result = obj.search(productNames, offset, limit);
bugsObj = (Object[])result.get("bugs");
}
else
{
result = obj.search(productNames, 21900, 63);
Object[] bugsObj1 = (Object[])result.get("bugs");
result = obj.search(productNames, 21964, 36);
Object[] bugsObj2 = (Object[])result.get("bugs");
bugsObj = new Object[bugsObj1.length+bugsObj2.length];
for(int i = 0; i < bugsObj1.length + bugsObj2.length; i++)
{
bugsObj[i] = i < bugsObj1.length ? bugsObj1[i] : bugsObj2[i - bugsObj1.length];
}
}
当我找到所有类别元素时,只有产品模型内容即将到来有什么方法可以在我们获取类别模型时获得产品关联(ProductDimension,ProductSwatches等)?
答案 0 :(得分:0)
默认情况下,CakePHP 2递归级别仅为第1级关联。
您可以使用recursive
find
选项(或模型属性)来获取深层关联。
有关模型recursive
属性的详细信息,请参阅:http://book.cakephp.org/2.0/en/models/model-attributes.html#recursive
例如:
$this->Category->find('all', array(
'recursive' => 2,
'conditions' => array(), // Your conditions, etc.
));
另一个(以及更好的方式)正在使用Containable
行为。
添加
public $ actsAs = array(&#39; Containable&#39;);
到您的模型以启用Containable
行为。然后你可以使用:
$this->Category->find('all', array(
'contain' => array(
'Product' => array(
'ProductSwatch',
'ProductDimension',
'ProductCare',
'Review',
),
),
'conditions' => array(), // Your conditions, etc.
));
获取更深层次的关联。
有关Containable
行为和更深层次关联的详细信息,请参阅http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html#containing-deeper-associations