2013-03-05 3 views
0

Я использую cakephp с нескольких месяцев, и сегодня у меня проблема, и я не знаю, почему она не работает, как всегда.Почему я не вижу результата HABTM?

У меня есть три таблицы: список

сообщений комментарии posts_comments

В моделях, я установил:

комментарий модель:

var $hasAndBelongsToMany = array('Post'); 

Сообщение модели

var $hasAndBelongsToMany = array('Comment'); 

Затем в моем контроллере, например PostController:

$this->set('comments', $this->Post->Comment->find('list', array('order' => 'Comment.id'))); 

А потом в моем Post View у меня есть:

<?php 
echo $this->Form->create('Post'); 
echo $this->Form->input('name', array('label' => 'Name', 'maxlength' => '100')); 
echo $this->Form->input('Comment.Comment', array('label' => 'New Comment', 'type' => 'select', 'multiple' => true)); 
echo $this->Form->submit('Add', array('class' => 'button')); 
?> 

В моих других проектах всегда работал! У меня всегда был мой «Комментарий», отображаемый в списке, но здесь я не знаю, почему он не работает, ничего не отображается, я что-то забыл?

С уважением,

4m0ni4c.

+1

Возможно, вы не хотите использовать отношения HABTM для сообщений и комментариев, поскольку комментарий не может принадлежать многим сообщениям, обычно он просто принадлежит только одному сообщению, где сообщение может иметь много комментариев. Поэтому 'Post' должен' hasMany' 'Comment', а' Comment' должен 'принадлежать'' Post'. –

+0

Я выбрал этот пример, чтобы проиллюстрировать мои проблемы, я, в моем случае, действительно нуждаюсь в отношениях HABTM :) – NH3

+0

Моя основная проблема заключается в том, что обычно мне не нужно указывать значение «options» в моем другом входе, но здесь я не знаю, почему, если я не укажу эту переменную, я не могу отобразить свой комментарий:/ – NH3

ответ

0

Я не знаю, если вы решили еще, но согласно Cake конвенции, таблицы HABTM должны быть названы alphabeticaly, чтобы они работали волшебного.

Это новое имя таблицы соединений должно включать имена обеих моделей, в алфавитном порядке, и разделять знаком подчеркивания (_). Содержимое таблицы должно быть два поля, каждый из которых внешние ключи (которые должны быть целыми числами), указывающие на оба первичных ключей участвующих моделей

Так ваша таблица posts_comments должна быть comments_posts, если вы не изменяли ассоциации напрямую на модели Post и Comment.

Смежные вопросы