我的数据库成员和成员项目中有两个表。我为它创建了两个模型。一个是会员,另一个是会员
会员模型与Memberitem有很多关系,而Memberitem模型与我的会员模型有关系。
Memberitem条目具有基于颜色的特定分类,例如红色,粉红色,绿色等。 现在我想选择所有使用分页至少有一个粉红色成员项目的成员。
目前我正在使用:
$this->paginate = array(
'limit' => 5,
'contain' => array(
'Memberitem' => array(
'conditions' => array('Memberitem.color' => 'Pink')
)
)
);
但它显示了所有成员。
输出是这样的:
Array
(
[0] => Array
(
[Member] => Array
(
[id] => 1
[first_name] => fh
[last_name] => g
)
[Memberitem] => Array
(
[0] => Array
(
[id] => 1
[name] => item2
[color]=> Pink
)
)
)
[1] => Array
(
[Member] => Array
(
[id] => 2
[first_name] => ad
[last_name] => vd
)
[Memberitem] => Array
(
)
)
[2] => Array
(
[Member] => Array
(
[id] => 3
[first_name] => ae
[last_name] => sdi
)
[Memberitem] => Array
(
[0] => Array
(
[id] => 3
[name] => item1
[color]=> Pink
)
)
)
)
它显示了这个结果。空成员的成员仍在那里。我只希望得到第1和第3条记录。
答案 0 :(得分:0)
这是一个经典之作:-)虽然需要一段时间才能得到它。
蛋糕手册在这方面非常平和。你应该阅读:http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html#containing-deeper-associations
因此,如果您只想要具有某些MemberItem的成员,则应查询MemberItem并包含成员模型。您可以从成员模型实际执行此操作:
$this->Member->Memberitem->find('all', array(
'conditions' => 'Memberitem.color = "Pink"',
'contain' => 'Member',
));
或者可能更适合你的app:
$this->paginate['Memberitem'] = array(
'contain' => array('Member'),
'conditions' => array(
'Memberitem.color' => 'Pink',
),
);
$items = $this->paginate('Memberitem');
希望有所帮助!