$this->user
モデルのオブジェクトがありますUser
。このオブジェクトは$this->Auth->user
、私のアプリコントローラーで次のように設定されます:
$this->user = ClassRegistry::init('User');
$this->user->set($this->Auth->user);
魅力のように機能します。コントローラーで $this->user を print_r すると、次のようになります。
User Object ( [validate] => Array ( blah blah blah
典型的なオブジェクト。にGroup
属するモデルがありUser
、ユーザーには多くのグループがあります。これらの変数は、モデルで適切に設定されています。ログインしているこの特定のユーザーのすべてのグループを検索したいので、これを試しました:
$groups = $this->user->Group->find('list', array('fields'=>array('id', 'group_name')))
重要なのは、$this->user を使用して、$this->user の owner_id に基づいてグループ クエリを自動的にフィルター処理することです。ユーザーを表す特定のオブジェクトを取得し、そのユーザーに基づいてグループ クエリを実行すると、関連するグループのみが返されます。
問題は、 $groups には、現在のユーザーからのみ必要なエントリではなく、Groups テーブルのすべてのエントリが含まれていることです。"conditions"=>"user_id"=$this->Auth->user('id')
モデルチェーンを介して使用しているユーザーを既に指定しているため、find 関数にパラメーターを追加する必要がある理由がわかりません。
これが機能しない理由はありますか?それが実行する sql ステートメントは、グループ WHERE 1 = 1 に対する単純な SELECT です (したがって、まったくフィルタリングされません)。