1

関連付けられているモデルのデータを現在ログインしているユーザーに受信しようとしています。これは私の現在のユーザーモデルです:

class User extends AppModel {
    public $name = 'User';

    public $hasMany = array(
        'Website' => array(
            'className'  => 'Website',
            'foreignKey' => 'user_id'
        )
    );
}

そして、これは User モデルに関連付けられた Web サイト モデルです。

class Website extends AppModel {
    public $name = 'Website';
    public $belongsTo = array(
        'User' => array(
            'classname' => 'User',
            'foreignKey' => 'user_id'
        )
    );
}

ログインしたユーザーの Web サイトを取得しようとすると、DB 要求の条件で静的な方法で Web サイトの user_id を設定したくありません。だから私は関連付けを使用しようとしました:

public function beforeFilter() {
    parent::beforeFilter();
    $this->Website->User->id = $this->Auth->user('id');
    // OR
    $this->Website->User->set($this->Auth->user());
}

public function index() {
    $this->set('websites', $this->Website->find('all'));
}

ただし、正しい user_id を持つ Web サイトだけではなく、すべての Web サイトを返します。

私が提案する方法でそれを行う方法はありますか?はいの場合、何が間違っていますか?

どうもありがとう!

4

1 に答える 1

1

Model->find('all') を使用すると、そのモデルのすべてのレコードが取得されます。

所属関係を使用して、(find-> を使用して) User を取得すると、Cake は同じコレクション内の Web サイトを取得します。認証の処理方法によっては、そのデータはユーザー セッションの開始以降のものである可能性があります。

于 2012-04-12T21:32:29.867 に答える