我有属于用户的图片,我有优惠券属于用户。每个图像和优惠券表在我的数据库中都有一个'user_id'的foreignKey。当我调试此控制器逻辑的输出时:
$f=$this->Coupon->find('all', array(
'conditions'=>array(
'OR'=> array (
'Coupon.expires' =>0,
'Coupon.end_date >'=>date('y-m-d')
)
),
'contain'=>array(
'Image',
'Location'=>array('id','address','city','state','zip','area_code','exchange','sln','website'),
'User'=>array('id')
)
)
);
$this->set('printcoupons', $f);
}
我得到的所有数据除了一个Image数组,这个蛋糕告诉我与优惠券无关。我已经尝试将优惠券的递归设置为2,并且我对获取的内容没有任何改变。我尝试加载用户模型并以这种方式进行查找,结果是灾难性的。考虑到我不希望它们直接相互关联,我只是不明白如何让图像和优惠券一起玩。
答案 0 :(得分:2)
他们让你的'包含'数组意味着Image与Coupon直接相关(他们之间没有模型),但事实并非如此。优惠券属于用户和用户有*图像。所以Image需要进入User数组。您包含的所有模型都可以使用所有或大多数可用的find()选项。当使用contains时,recursive是boolean。
http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html#containablebehavior-options
我认为你应该把它添加到你的AppModel,因为你几乎总是使用contains,并且包含必须附加到收容中使用的所有模型
public $actsAs = array('Containable');
这样您就不必将行为附加到每个模型上。
$f = $this->Coupon->find('all',
array(
'conditions' => array(
'OR' => array(
'Coupon.expires' => 0,
'Coupon.end_date >' => date('y-m-d')
)
),
'contain' => array(
'Location' => array(
'fields' => array(
'id', 'address', 'city', 'state', 'zip', 'area_code',
'exchange', 'sln', 'website'
)
),
'User' => array(
'fields' => array('id'),
'Image'
)
)
)
);