cakephp-documentation から理解したように、「containable」動作の利点の 1 つは、必要なデータが少ない場合に、より少ないデータを取得できることです...
しかし、ユーザーとユーザーグループ間の接続の場合、それはうまくいかないようです。
私の関連付けは次のようになります。
Group
hasMany: Membership
User
hasMany: Membership
Membership
belongsTo: User, Group
(私は HABTM を使用していません。代わりにモデル「メンバーシップ」を間に使用して、ユーザーとグループに参加します)。
すべてのモデルは、'Containable'-Behavior を実装しています。
今、特定の ID を持つグループのすべてのメンバーを取得したいと考えています。ID とメールアドレスのみを取得します。私のクエリは次のように構築されています。
$members = $this->Membership->find('all', array(
'conditions' => array(
'group_id' => $id
),
'contain' => array(
'User' => array(
'fields' => array('id', 'fullName')
),
)
));
しかし、結果の配列は次のようになります。
array(
(int) 0 => array(
'Membership' => array(
'id' => '1',
'group_id' => '1',
'user_id' => '1',
'role' => 'member'
),
'Group' => array(
'id' => '1',
'name' => 'Foo Group'
),
'User' => array(
'password' => '*****',
'id' => '1',
'name' => 'Dr. Foo'
'mail' => 'foo@bar.baz',
'role' => 'admin'
)
)
)
だから、私が望んでいたよりも間違いなく多くのフィールドがフェッチされています...(「含む」キーを次のように設定したのと同じです:
'contain' => array(
'User.fullName', 'User.id'
)
私はcontainable-behaviorを間違って使用していますか?