1

我在cakephp 2.0中开发了一个网站。 我有一个关系HABTM到相同型号如下:cakephp HABTM保存null字段

class Product extends AppModel { 
    public $name = 'Product'; 
    public $useTable = 'products'; 
    public $belongsTo = 'User'; 
    public $actsAs = array('Containable'); 
     public $hasAndBelongsToMany = array(
     'Product' => array(
      'className' => 'Product', 
      'joinTable' => 'ingredients_products', 
      'foreignKey' => 'product_id', 
      'associationForeignKey' => 'ingredient_id', 
      'unique' => false 
     ) 
    ); 

} 

我想记录保存到我的观点用一个简单的形式是这样的:

echo $this->Form->create('IngredientProduct', array ('class' => 'form', 'type' => 'file')); 

     foreach ($product as $prod) { 
      echo '<div>'.$prod['ProductAlias']['alias'].'</div>'; 
      echo $this->Form->input('IngredientProduct.product_id', array ('type'=>'text', 'value'=> $prod['ProductAlias']['id'], 'label'=> false, 'id' => 'id')); 
     } 

     $select = '<select name="data[IngredientProduct][ingredient_id]" id="[IngredientProductIngredientId">'; 
     foreach ($other_product as $prod2) { 
      $select .= '<option value="'.$prod2['ProductAlias']['id'].'">'.$prod2['ProductAlias']['alias'].'</option>'; 
     } 
     $select .= '</select><br>'; 
     echo($select); 

     echo $this->Form->submit('Collega', array('id'=>'link_product')); 
     echo $this->Form->end(); 

进入我的控制器我保存在这模式:

if ($this->Product->saveAll($this->request->data)){ 
       $this->Session->write('flash_element','success'); 
       $this->Session->setFlash ('Prodotto collegato con successo.'); 
       //$this->redirect(array('action'=>'edit',$alias)); 
      } 
      else{ 
       $this->Session->write('flash_element','error'); 
       $this->Session->setFlash('Errore di salvataggio activity'); 
      } 

当我要去看看到我看到成分数据库:ID被设定好,但PRODUCT_ID是0 我已经调试我reques T->数据,这是数组:

array(
    'IngredientProduct' => array(
     'product_id' => '1', 
     'ingredient_id' => '2' 
    ) 
) 

我打印CakePHP所创建的SQL查询:

INSERT INTO `db`.`ingredients_products` (`product_id`, `ingredient_id`, `modified`, `created`) VALUES ('', 2, '2012-10-09 23:19:22', '2012-10-09 23:19:22') 

为什么PRODUCT_ID为空,而不是1? 有人可以帮我吗? 感谢

+0

请参阅下面的网址我认为这对你非常有帮助。 http://stackoverflow.com/questions/10428233/cakephp-2-1-saving-habtm-fields –

+0

是我与白水 –

回答

1

我觉得这条线是错误的:

$this->Product->saveAll($this->request->data); 

尝试:

$this->IngredientProduct->saveAll($this->request->data); 

为您的形式似乎让数据的关系,而不是一个新的产品。

+0

做IngredientProduct不存在相同 –