我是cakephp的新手,并且已经完成了Apress的书“从初学者到专业人士开始使用CakePHP”,但在烘焙章节之后遇到了一个问题。
(如果你已经看到我最近的另一个问题,你就会知道我必须跳过那一章,因为我无法让我的win7机器上的烘焙控制台工作。)
问题是我认为表关联不再正常工作,即使他们在本书开头时我已经开始使用博客应用程序示例。
博客示例包含以下表格:
Users
Posts
用户模型:$ hasMany = array('Post'); Post模型:$ belongsTo = array('User');
我目前正在使用脚手架来测试一切,但是有一些自定义视图和posts_controller的自定义add()动作。
问题是当我对posts_controller使用add()动作时,用户的id字段(来自Users表)不会放入Posts表的user_id外键字段中。因此,当我显示帖子时,视图的“作者”部分是空白的,因为找不到ID。如果我使用debug($posts)
,则返回的数组没有任何关于每个帖子的user_id的信息,因此“用户”数组中没有任何信息。
我认为user_id是在cakePHP的表之间添加关联的传统方式,但它似乎没有用。
任何想法我需要做什么?
非常感谢,
Infiniti Fizz
P.S。对不起所有人,如果我对cakephp问题感到不知所措。
P.P.S
几乎忘记了,我对帖子的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'));
}
答案 0 :(得分:1)
我也是新蛋糕,但据我所知,我认为你应该在add.ctp中改变它:
$form->input('User')
到这个
$form->input('user_id')
formhelper负责将输入显示为下拉列表(基于hasMany-belongsTo引用)。