模型X与Model Y cakephp无关

时间:2012-01-31 21:17:15

标签: cakephp-2.0 cakephp-appmodel

我有属于用户的图片,我有优惠券属于用户。每个图像和优惠券表在我的数据库中都有一个'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,并且我对获取的内容没有任何改变。我尝试加载用户模型并以这种方式进行查找,结果是灾难性的。考虑到我不希望它们直接相互关联,我只是不明白如何让图像和优惠券一起玩。

1 个答案:

答案 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'
                )
            )
        )
    );