在cakephp中具有条件的相关模型

时间:2013-09-19 16:42:49

标签: cakephp cakephp-appmodel cakephp-2.3

如果我有两个表,在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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您需要使用joins,因为手册中说明了这一点:

  

在CakePHP中,一些关联(belongsTo和hasOne)执行自动连接以检索数据[...]但是hasMany和hasAndBelongsToMany关联不是这种情况。