正如我从 cakephp 文档中了解到的那样,“可包含”行为的优点之一是,如果您需要更少的数据,则能够获取更少的数据......
但这在我的用户和用户组之间的连接情况下似乎不起作用。
我的关联看起来像:
Group
hasMany: Membership
User
hasMany: Membership
Membership
belongsTo: User, Group
(我没有使用 HABTM,而是在两者之间使用模型“会员”来加入用户和组)。
所有模型都实现了“可包含”行为。
现在我想获取具有某个 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'
)
我是否使用了可包含的行为错误?