0

如果我有两个表,在一个拥有且属于多的关系(例如成员和事件)和一个连接表(例如 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

任何帮助,将不胜感激。

4

1 回答 1

1

您将需要使用连接,因为正如手册所述:

在 CakePHP 中,一些关联(belongsTo 和 hasOne)执行自动连接以检索数据 [...] 但 hasMany 和 hasAndBelongsToMany 关联并非如此。

于 2013-09-19T23:11:39.273 回答