Я новичок в CakePHP и работаю с книгой Apress «Начиная CakePHP от новичка до профессионала», но столкнулся с проблемой после главы о выпечке.
(Если вы видели мою другую недавнюювопрос, вы будете знать, что мне пришлось пропустить эту главу, потому что я не могу заставить консоль bake работать на моем компьютере с win7).
Проблема в том, что я не думаю, что ассоциации таблиц работают должным образом,несмотря на то, что они использовали, когда я запускал пример приложения блога в начале книги.
Пример блога имеет следующие таблицы:
Users
Posts
Модель пользователя: $ hasMany = array('Сообщение');Модель Post: $ ownTo = array ('User');
В настоящее время я использую скаффолд только для того, чтобы протестировать все, но у меня есть несколько пользовательских представлений и пользовательское действие add () для posts_controller.
Проблема в том, что когда я использую действие add () для posts_controller, поле id для пользователя (из таблицы Users) не помещается в поле внешнего ключа user_id таблицы Posts.Поэтому, когда я отображаю сообщение, часть представления «автор» остается пустой, поскольку идентификатор не может быть найден.Если я использую debug($posts)
, то возвращаемый массив не содержит никакой информации для user_id каждого поста и, следовательно, никакой информации в массиве 'User'.
Я думал, что user_id был обычным способом добавления ассоциации междустолы для cakePHP, но, похоже, он не работает.
Есть идеи, что мне нужно сделать?
Заранее большое спасибо,
Infiniti Fizz
PS Извините всех, если я перегружаю вас проблемами с CakePHP.
PPS
Почти забыл, мое представление add.ctp для сообщений выглядит следующим образом:
<div class="posts form">
<?=$form->create('Post');?>
<fieldset>
<legend>Add Post</legend>
<?
e($form->input('name'));
e($form->input('date'));
e($form->input('content'));
e($form->input('User'));
?>
</fieldset>
<?=$form->end('Submit');?>
</div>
<div class="actions">
<ul>
<li><?=$html->link(__('List Posts', true),array('action'=>'index'));?></li>
<li><?=$html->link(__('List Users', true),array('controller','users', 'action'=>'index'));?></li>
<li><?=$html->link(__('New User', true),array('controller'=>'users', 'action'=>'add'));?></li>
</ul>
</div>
И действие add () в posts_controller.php:
function add()
{
if(!empty($this->data))
{
$this->Post->create();
if($this->Post->save($this->data))
{
$this->Session->setFlash('The Post has been saved', true);
$this->redirect(array('action' => 'index'));
}
else
{
$this->Session->setFlash('The Post could not be saved. Please try again.', true);
}
}
$users = $this->Post->User->find('list');
$this->set(compact('users'));
}