В моем приложении у меня есть две таблицы (у меня есть больше, но я обсуждаю только две):
**Posts**
id
title
datetime
content
**Comments**
id
content
post_id
user_id
Как вы можете видеть, это связь, использующая post_id в качестве внешнего ключа.
При просмотре сообщения у меня есть следующий код для отображения комментариев:
<?php if ( ! empty($post['Comment']) ): ?>
<ul>
<?php foreach ($post['Comment'] as $comment): ?>
<li>
<?php echo $comment['title']; ?>
</li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<p>No comments...</p>
<?php endif; ?>
Вот метод контроллера для просмотра сообщения:
function view ( $id = null, $slug = null )
{
$post = $this->Post->find('first',array('contain'=>array('User'=>array('Comment','Profile')),'conditions'=>array('Post.id'=>Tiny::reverseTiny($id))));
if (!$post)
{
throw new NotFoundException('404');
}
else if($post['Post']['status'] == '0') // 0=draft 1=open 2=open
{
if($post['Post']['user_id'] == $this->Auth->user('id'))
{
$this->Session->setFlash('Your post has NOT been published yet');
}
else
{
throw new NotFoundException('404');
}
}
if (Inflector::slug($post['Post']['title']) != $slug || $slug = null)
{
$this->redirect(array('id'=>Tiny::toTiny($post['Post']['id']),'slug'=>Inflector::slug($post['Post']['title'])));
}
$this->set(compact('post'));
}
, и этомодель комментария:
class Comment extends AppModel
{
public $name = 'Comment';
public $belongsTo = array('User','Post');
public $actsAs = array('Containable');
}
и типичный URL для сообщения будет: /posts/Sample_post-1ns
Однако я ВСЕГДА получаю сообщение о том, что комментариев нет ... Но я заглянул вбаза данных и их ... и я дважды проверил, что все ассоциации правильны.Так что я могу только предположить, что приведенный выше код неверен!
Кроме того, это лучший способ вызвать комментарии?Поскольку я хочу добавить возможность фильтровать и разбивать их на страницы.
Cheers