CakePHP Sub Querys, Как? - PullRequest
       13

CakePHP Sub Querys, Как?

0 голосов
/ 06 августа 2011

У меня есть модель поста (таблица mysql), и структура примерно такая:

id, parent, user_id, title, desc, created, modified

Одна цепочка беседы состоит из поста, за которым следуют все последующие посты, где post.parent соответствуетисходный post_id.

Пример диалога между user_32 и user_40:

110, 0, 32, thread_title, sample_description_here, created_time, modified_time
121, 110, 40, comment_title, sample_comment_here, created_time, modified_time
130, 110, 32, comment_title, sample_comment_here, created_time, modified_time
140, 110, 32, comment_title, sample_comment_here, created_time, modified_time
166, 110, 40, comment_title, sample_comment_here, created_time, modified_time
290, 110, 32, comment_title, sample_comment_here, created_time, modified_time

В простом PHP я просто выполняю внешний запрос, затем внутренний запрос, а затем отображаю диалог на экране, ноКак вы достигаете этого с CakePHP ??

ВОПРОС:

Как мне построить запрос в CakePHP, чтобы отобразить один разговор, состоящий из (см. выше) post_id_110, за которым следуют все последующие сообщениягде post.parent == 110, упорядочено по методу созданного времени DESC.

Ответы [ 2 ]

1 голос
/ 06 августа 2011

В модели Post:

var $hasMany = array(
  'Children'=>array(
    'className' => 'Post',
    'foreignKey' => 'parent_id'
   )
 );

(и измените «parent» на «parent_id» в БД, просто соглашение).Затем в сообщениях контроллера:

$this->Post->find('first',array(
   'conditions'=>array(...),
   'contain'=>array('Children')
));

о да, и используйте Containable.Вам это не нужно для этой цели, но это делает find () более понятным и определенно полезным позже.

1 голос
/ 06 августа 2011

в почтовой модели:

var $belongsTo = array(
    'ParentPost' => array(
        'className' => 'Post',
        'foreignKey' => 'parent_id',
    ),
)

и затем использовать как любую другую ассоциированную модель

btw - parent_id более клич, чем родительский, и работает со скаффолдами

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