0

写真モデルを作成していますが、ユーザー、場所などの複数のモデルに属するようにするのは良い方法ですか?
場所もユーザーに属します

ここに写真用の私のフィールドがあります。

id
owner_id
type (an enum of the different models such as users and places)

これが私が持っているPhotoModelの属しています

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 に答える