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

谢谢,
三通

4

2 回答 2

1

这种方法可以工作,但如果将 recursive 设置为 2,最清晰的解决方案是在此类查询中动态创建和/或销毁关联。

于 2012-06-29T18:36:36.600 回答
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' => ''
)));
于 2012-07-02T10:41:53.623 回答