У меня довольно типичная модель комментария, в которой комментарий принадлежит многим другим моделям, таким как статья, обзор, фотография и т. Д. И, в свою очередь, каждая из этих моделей hasmany Comment. Вот как я построил отношения на модели Комментария ...CakePHP 2.4.2: Комментарии Отношения модели - Получите оригинальное название записи
<?php
App::uses('AppModel', 'Model');
class Comment extends AppModel {
var $name = "Comment";
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Article' => array(
'className' => 'Article',
'foreignKey' => 'post_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Photo' => array(
'className' => 'Photo',
'foreignKey' => 'post_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Review' => array(
'className' => 'Review',
'foreignKey' => 'post_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
}
Это работает как шарм, в котором, если я просматриваемой определенную статью, то я могу получить все комментарии из этой статьи, и она работает так же для другие модели. То, что я пытаюсь сделать, это показать ВСЕ последние комментарии с названием исходного сообщения независимо от того, какая модель оригинального сообщения исходит от (статья, обзор, фотография и т. Д.) В формате $comment['Original']['title']
. Я думал, добавив следующий код в belongsto модели Комментарий будет работать, но это не делает ....
'Original' => array(
'className' => 'Article',
'foreignKey' => 'post_id',
'conditions' => array('Comment.module_id' => 3),
'fields' => '',
'order' => ''
),
'Original' => array(
'className' => 'Review',
'foreignKey' => 'post_id',
'conditions' => array('Comment.module_id' => 2),
'fields' => '',
'order' => ''
),
'Original' => array(
'className' => 'Photo',
'foreignKey' => 'post_id',
'conditions' => array('Comment.module_id' => 8),
'fields' => '',
'order' => ''
),
К сожалению, это только показывает правильное название, если недавний комментарий был на фото (Comment.module_id = 8)
.
Вместо того, чтобы редактировать свой вопрос с совершенно новым вопросом, вы должны это сделать и задать другой вопрос о том, почему ваш сбой работает не так, как ожидалось ... и т. Д. – Dave
См. Вопрос http://stackoverflow.com/questions/16205520/cakephp-2-4-2-contains-not-working-as-expected – bowlerae