您好我正在构建我的用户模型,只有一张个人资料图片,这是一个图片模型的示例。我希望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模型中的图片列?谢谢!
答案 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"
。