如果我有两个表,在has-and-belongs-to-many-many关系(例如成员和事件)和连接表(例如MemberEvents)中,如何指定事件存在于与成员的条件关系中 - 也就是说,我想根据一些事件的批评来选择一些成员?我需要使用我的模型代码,而不是我的控制器代码 - 胖模型,瘦控制器,毕竟。
关于这一点,cakephp手册并不是很清楚,而且下面的代码(我做了我想做的事情)使其更加恶化:
public $hasAndBelongsToMany = array(
'Member' => array(
'className' => 'Member',
'unique' => 'keepExisting'
),
'ConfirmedMembers'=> array(
'className' => 'Member',
'unique' => 'keepExisting',
'conditions' => array('EventsMember.is_confirmed'=>1)
),
'UnconfirmedMembers'=> array(
'className' => 'Member',
'unique' => 'keepExisting',
'conditions' => array('EventsMember.is_confirmed'=>0)
)
);
..在SQLite中工作得很好,但在MySQL中却不行。 MySQL中会发生什么?这样:
错误:SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'Event.course_id'
(此处有关该错误的更多详细信息:http://pastebin.com/5byPu9NR)
任何帮助都将不胜感激。
答案 0 :(得分:1)
您需要使用joins,因为手册中说明了这一点:
在CakePHP中,一些关联(belongsTo和hasOne)执行自动连接以检索数据[...]但是hasMany和hasAndBelongsToMany关联不是这种情况。