2014-11-04 128 views
0

我有將以下屬性添加到產品的視圖。CakePHP如何保存多個文件

echo $this->Form->create('Product', array('role' => 'form')); 
echo $this->Form->input('ProductProperty.Property', array(
    'multiple' => 'multiple', 
    'type' => 'select', 
)); 
echo $this->Form->input('id', array('type' => 'hidden')); 
echo $this->Form->end('Submit); 

產品模型上的哪個操作必須調用該屬性以及ProductProperties是否創建? ProductProperty是產品和屬性表的映射模型。

array(
    'ProductProperty' => array(
     'Property' => array(
      (int) 0 => '4', 
      (int) 1 => '5' 
     ) 
    ), 
    'Product' => array(
     'id' => '1' 
    ) 
) 

我收到以下錯誤:

Error: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: 
a foreign key constraint fails (`product_properties`, CONSTRAINT `product_properties_id_fk2` FOREIGN KEY (`property_id`) REFERENCES `properties` (`id`)) 

SQL Query: INSERT INTO `product_properties` (`product_id`) VALUES (1) 

回答

0

在CakePHP多到許多所謂的HABTM 正是在這裏的食譜:http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasandbelongstomany-habtm

你應該有2種型號,產品和屬性,以及3數據庫表:產品屬性和產品屬性。比定義關聯,你完成了。

+0

我使用這種方式,但得到上面提到的錯誤,不爲什麼外鍵衝突存在。 – 2014-11-05 09:18:20

+0

這個數組來自哪裏?你手動創建它?它應該是類似array('Product'=> array('id'=> 1),'Property'=> array(array('id'=> 4),array('id'=> 5)) )。但你也有其他問題。我會建議您爲產品和屬性烘烤您的模型,控制器和視圖,並調查代碼和提交數據的形式。 – rrd 2014-11-05 11:40:17

-1

嘗試設置$this->Model->recursive = 1;

+1

請編輯更多信息。僅限代碼和「嘗試這個」的答案是不鼓勵的,因爲它們不包含可搜索的內容,也不解釋爲什麼有人應該「嘗試這個」。 – abarisone 2016-09-06 14:36:05

+0

這個帖子是舊的,我認爲他使用了cakephp 2.x ...哪個版本是你的,所以我可以幫助你..對於這個答案沒有任何信息只是使用設置遞歸到1之前你的Find().... 。 – 2016-09-06 15:35:28