CAKEPHP陷入关联模型


CAKEPHP Stucked in Associating Models

我使用cakephp,我对列出多个模型的想法感到困惑,下面是我的场景:

我有两个主要的模型,即任务和事件。我使用Events模型来跟踪所有更改。这更改了ff字段:id, model, model_id我使用Events表来跟踪多个模型更改。所以当一些东西改变到任务模型时,它将被记录到事件模型(明白吗??)

我想做的是每当我使用事件模型的find方法时,我想列出模型信息(例如,任务模型)以及我的事件信息,如下所示:

array(
    [0] => array (
        [Event] => array(
            id => 1
            model => Task
            model_id => 2
            changed => array()
        )
        [Task] => array(
            id => 2
            name => Task 1
            descp => Test Task
        )
    )
)

注意:模型可以是任何模型,可以是Projects模型。

在我的task.php,这是没有问题的,因为我可以很容易地声明:

var $hasMany = array(
    'Events' => array(
            'className' => 'Events',
            'foreignKey' => 'model_id',
            'dependent' => false,
            'conditions' => array('Events.model' => 'Task')
        )
    );

我可以在任务上使用find方法获得事件信息,尽管使用

 $this->Task->Event->find('all'); 

不能工作,我不知道为什么。

所以一旦我在事件模型中声明,像这样的东西:

var $belongsTo = array(
    'Task' => array(
        'className' => 'Task',
        'foreignKey' => 'model_id',
        'conditions' => array('Event.model' => 'Task', 'Event.model_id' => 'Task.id'),
        'fields' => '',
        'order' => ''
    )
);

将抛出SQL错误。你们知道怎么实现它吗?提前感谢。:)

我一直使用多态模型。$this->Task->Event->find('all')不起作用的原因是您在Event模型上执行查找,该模型在定义其belongsTo关联之前,没有任何检索Task信息的方法。

就目前而言,我看到的唯一奇怪的事情是,你把你的Task关联别名为Events(复数),而不是它的单数版本,这是模型的惯例。您还将className标识为复数版本。