我是CakePHP的新手,并且一直在撰写Apress书《从新手到专业人士》中,但在烘焙章节后遇到了问题。

(如果您已经看过我最近的其他问题,您会知道我必须跳过该章,因为我无法在Win7机器上使用烘焙控制台)。

问题在于,我认为桌子协会不再正常工作,即使他们在书籍开头开始Blog应用程序示例时。

博客示例具有以下表:

Users
Posts

用户模型:$ hasmany = array('post');邮政模型:$ allate = array('user');

我目前正在使用脚手架来测试所有内容,但是有一些自定义视图和posts_controller的自定义add()操作。

问题在于,当我为posts_controller使用add()操作时,用户表(从用户表)的ID字段不会放入邮局表的User_id外键字段中。因此,当我显示帖子时,视图的“作者”部分是空白的,因为找不到ID。如果我使用 debug($posts) 然后,返回的数组没有每个帖子的user_id信息,因此“用户”数组中没有信息。

我认为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>

以及posts_controller.php中的add()操作:

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'));
}
有帮助吗?

解决方案

我也是蛋糕的新手,但据我所知,我认为您应该在add.ctp中更改它:

$form->input('User')

对此

$form->input('user_id')

FormHelper小心将输入显示为下拉列表(基于Hasmany-Belongsto参考)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top