CakePHP有一个关联条件

时间:2011-08-08 22:57:40

标签: cakephp

您好我正在构建我的用户模型,只有一张个人资料图片,这是一个图片模型的示例。我希望hasOne的条件只包括Image.id等于用户表中“picture”列的图像。我知道有些问题......这是代码的相关部分。

    var $hasOne = array(
            'ProfileImage' => array(
                    'className' => 'Image',
                    'conditions' => array('ProfileImage.id' => 'User.picture'),
                    'dependent' => false,
                    'foreignKey' => 'user_id',
            )
    );

我的病情有什么问题?如何将ProfileImage.id指定为等于User模型中的图片列?谢谢!

1 个答案:

答案 0 :(得分:4)

如果外键(picture)在User模型中,那么您的关联应该是User belongsTo Image。如果图像一次只能由一个用户使用,则反向是Image hasOne用户。如果一个图像可以被多个用户使用,那么它将是Image hasMany User。

但是,如果图像一次只能由一个用户使用,则更好的数据结构是将user_id列添加到images表。然后你有一个用户hasOne Image / Image belongsTo用户关系。

您既不需要conditions,也不需要foreignKey


在您澄清问题后,您的情况需要如下:

'conditions' => array('ProfileImage.id = User.picture')

否则,Cake认为ProfileImage.id应该等于字符串"User.picture"