2010-08-09 105 views
0

我是cakephp的新手,一直在通過Apress一書「從新手到專業開始CakePHP」,但在烘焙章節後遇到了問題。 (如果你看過我最近的另一個問題,你就會知道我必須跳過那一章,因爲我不能讓我的win7機器上的烘焙控制檯工作)。CakePHP協會弄糟

問題在於,我認爲表格關聯不再適用,即使它們在本書開始時開始使用博客應用程序示例時也是如此。

該博客實例具有以下表:

Users 
Posts 

用戶模型:$的hasMany =陣列( '後'); Post模型:$ belongsTo = array('User');

我目前使用的腳手架只是爲了測試一切,但有幾個自定義視圖和一個自定義add()動作的posts_controller。

問題是,當我爲posts_controller使用add()操作時,用戶(來自Users表)的id字段未放入Posts表的user_id外鍵字段中。因此,當我顯示帖子時,視圖的「作者」部分是空白的,因爲找不到ID。如果我使用debug($posts),那麼返回的數組沒有任何關於每個帖子的user_id的信息,因此'User'數組中沒有任何信息。

我以爲user_id是爲cakePHP添加表間關聯的傳統方式,但它似乎沒有工作。

任何想法我需要做什麼?

感謝這麼多提前,

英菲尼迪菲斯

附:對不起所有人,如果我用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')); 
} 

回答

1

我也是新的蛋糕,但據我所知,我認爲你應該改變這個add.ctp:

$form->input('User') 

$form->input('user_id') 

的表單助手負責顯示輸入作爲一個下拉(基於的hasMany-屬於關聯的參考文獻)。

+0

嗯,工作,非常感謝,我只是假設,會下降的user_id值,如1,2,3等,但耶是有效的。 那麼這本書的第一個錯誤就是我已經找到了,最好圈一個:) – 2010-08-10 11:01:01