CakePHP - 模型属于2个不同的模型

时间:2012-06-29 18:09:15

标签: cakephp cakephp-2.0

我正在拍摄照片模型,让它属于多个模型(如用户,地点等)是一种很好的做法吗? 地方也属于用户

所以这是我的照片领域。

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错误。

谢谢,
三通

2 个答案:

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