-1

私は3つのモデルを持っています

  1. ユーザー
  2. 状態
  3. コメント

ユーザーとステータスの関連付けが完了しました。コメントのために参加したいのですが、少し混乱していて、次のようになると思います...

シナリオ 1: ユーザーには hasMany ステータスがあり、ステータスはユーザーに属しています [完了] シナリオ 2: ステータスにはコメントがあり、コメントはステータスに属しています [どちらも同様に実行されます]

私の心を蝕んでいるのは、コメントもユーザーに属していることです [ 正しいか間違っていますか ? ]

もしそうなら、これは私が属する方法です

var $belongsTo = array('status','user');

そして find('all') はどうですか?こんな感じでしょうか

$this->User->Status->Comment->find('all'); 
4

1 に答える 1

1

わかりました。Facebookのようなアプリケーションに基づいて、次のような関連付けが必要だと思います。

ユーザー

public $hasMany = array(
    'Status' => array(
        'className' => 'Status',
        'foreignKey' => 'user_id',
        'dependent' => true
    ),
    'Comment' => array(
        'className' => 'Comment',
        'foreignKey' => 'user_id',
        'dependent' => true
    ),
);

状態

public $hasMany = array(
    'Comment' => array(
        'className' => 'Comment',
        'foreignKey' => 'status_id',
        'dependent' => true
    ),
);

public $belongsTo = array(
    'User' => array(
        'className' => 'User',
        'foreignKey' => 'user_id'
    ),
);

コメント

public $belongsTo = array(
    'Status' => array(
        'className' => 'Status',
        'foreignKey' => 'status_id'
    ),
    'User' => array(
        'className' => 'User',
        'foreignKey' => 'user_id'
    ),
);

たとえば、ステータスのコメントを見つけるには、ContainableBehaviorを使用できます。

お役に立てれば。

于 2012-10-09T11:40:03.553 に答える