CAKEPHP застрял в ассоциированных моделях - PullRequest
0 голосов
/ 13 ноября 2011

Я использую cakephp, и я застрял в идее перечисления нескольких моделей, вот мой сценарий:

У меня есть две основные модели, а именно Задача и События. Я использовал модель событий, чтобы отслеживать все изменения. здесь есть поля ff: id, model, model_id, изменен Я использовал таблицу «События» для отслеживания нескольких изменений модели. поэтому, когда что-то изменилось в модели задач, оно будет зарегистрировано в моделях событий (получить представление ??)

Что я хочу сделать, так это то, что всякий раз, когда я использовал метод поиска для модели события, я хочу перечислить информацию о модели (например, модель задачи) вместе с информацией о моих событиях, например:

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

        [Task] => array(
            id => 2
            name => Task 1
            descp => Test Task
        )

    )
)

Примечание: модель может быть любой моделью, это может быть модель проекта.

В моем файле task.php это не проблема, потому что я могу легко объявить:

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

Я могу получить информацию о событиях, используя метод поиска в задаче, но используя

 $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. Ребята, у вас есть идея, как это реализовать? Заранее спасибо. :)

1 Ответ

2 голосов
/ 13 ноября 2011

Я использую полиморфные модели все время.Причина, по которой $this->Task->Event->find('all') не работает, заключается в том, что вы выполняли поиск для модели Event, которая до определения ее ассоциации belongsTo не имела средств для извлечения информации Task.

На данный момент единственное, что я вижу странным, - это то, что вы связали свою ассоциацию Task как Events (множественное число), а не ее единственную версию, которая является соглашением для моделей.Вы также определили className как вариант множественного числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...