Я новичок в cakephp и работал над книгой Apress «Начало CakePHP от новичка до профессионала», но столкнулся с проблемой после главы обжига.Ассоциации CakePHP messing up
(Если вы видели мой другой недавний вопрос, вы поймете, что мне пришлось пропустить эту главу, потому что я не могу заставить печенье работать на моей машине win7).
Проблема заключается в том, что я не думаю, что ассоциации таблиц работают должным образом больше, даже если они и были, когда я начал пример приложения блога в начале книги.
Пример блога имеет следующие таблицы:
Users
Posts
Модель пользователя: $ hasMany = массив ('Post'); Модель Post: $ belongsTo = array ('Пользователь');
В настоящее время я использую эшафот, чтобы проверить все, но имеет несколько пользовательских представлений и пользовательское действие add() для posts_controller.
Проблема заключается в том, что когда я использую действие add() для posts_controller, поле id для пользователя (из таблицы Users) не помещается в поле внешнего ключа user_id таблицы Posts. Поэтому, когда я показываю сообщение, «авторская» часть представления пуста, потому что идентификатор не может быть найден. Если я использую debug($posts)
, то возвращаемый массив не имеет никакой информации для user_id каждого сообщения и, следовательно, никакой информации в массиве «Пользователь».
Я думал, что user_id был обычным способом добавления связи между таблицами для cakePHP, но он, похоже, не работает.
Любые идеи, что мне нужно делать?
Большое спасибо заранее,
Infiniti Fizz
P.S. Извините, если я подавляю вас с проблемами 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>
и действие дополнения() в 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'));
}
Ах, это сработало, спасибо, я просто предположил, что это приведет к выпадению значений user_id, таких как 1,2,3 и т. Д., Но да, что сработало. Ну вот первая ошибка в той книге, которую я/вы нашли, лучше обведите кружком :) –