我正在拍摄照片模型,让它属于多个模型(如用户,地点等)是一种很好的做法吗? 地方也属于用户
所以这是我的照片领域。
id
owner_id
type (an enum of the different models such as users and places)
这是我拥有的PhotoModel中的belongsTo
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'owner_id',
'conditions' => array('Photo.type' => 'user'),
'fields' => '',
'order' => ''
),
'Place' => array(
'className' => 'place',
'foreignKey' => 'owner_id',
'conditions' => array('Photo.type' => 'place'),
'fields' => '',
'order' => ''
)
);
或者更好地创建单独的模型,如UserPhoto,PlacePhoto等?
现在使用这种方法,当我将递归设置为2时,我有时会看到dbo错误。
谢谢,
三通
答案 0 :(得分:1)
这种方法可行,但如果将递归设置为2,则最明智的解决方案是在此类查询中create and/or destroy associations on the fly。
答案 1 :(得分:0)
如果您将来要使用UserPhoto和PlacePhoto模型,那么最好为它们创建单独的模型。这样您就可以在以后自定义这些模型。或者,如果您很少使用这些模型,那么您可以特别将这些模型绑定到控制器的方法中。
$this->User->bindModel(array('belongsTo' => array(
'User' => array(
'className' => 'User',
'foreignKey' => 'owner_id',
'conditions' => array('Photo.type' => 'user'),
'fields' => '',
'order' => ''
),
'Place' => array(
'className' => 'place',
'foreignKey' => 'owner_id',
'conditions' => array('Photo.type' => 'place'),
'fields' => '',
'order' => ''
)));