[英]cakephp habtm relationship (saving data)
與HABTM相關的問題已經在stackoverflow上發布了很多,但我仍在尋找解決方案。
我正在創建一個應用程序,該應用程序允許基於特定的子類別創建主題。 在添加主題時,系統會要求用戶提供標簽(以相同的形式)。 現在,當用戶單擊“添加”按鈕完成將標簽添加到主題后,主題已成功添加,但標簽未添加。
我已經為主題和標簽創建了連接表,並將其作為tbl_tags_topics.
(按照cakephp的約定定義),並在主題和標簽模型中正確定義了“ hasAndBelongsToMany”數組。
我現在缺少什么步驟?
我還有一個與此相關的問題,但是當我能夠將與某個主題相關的標簽成功發送到數據庫時,我將發布該問題。 (該功能類似於stackoverflow的標簽添加和附加的功能)
非常感謝您的幫助。如果您找到HABTM的任何優秀教程,也請讓我知道。
謝謝
保存其中一個字段時,您將傳遞如下參數:
$this->Model->save(
'Model' => array('id' => 1, 'name' => 'one random field)
);
如果具有HABTM標簽,則可以執行以下操作:
$this->Model->save(
'Model' => array('id' => 1, 'name' => 'one random field'),
'Tag' => array('Tag' => array(1))
);
但是,此本機功能存在一個問題,那就是每次保存對象時,都需要將每個標簽傳遞給保存的數組。 否則,將它們全部刪除,然后再讀取。
但是,您可以在面包店上找到一個名為擴展關聯的插件。
使用它,您可以:
$this->Model->habtmAdd('Tag', 1, 1);
其中第一個“ 1”是模型的對象標識。 第二個是標簽的對象ID。
並刪除標簽:
$this->Post->habtmDelete('Tag', 1, 1);
在斯托恩維格先生的幫助下,我得以解決我的問題。 這里的鏈接描述了如何在cakephp中實現此類功能的完整過程。 這是一個很棒的教程,用於學習有關HABTM關系的更多信息。
對於1.3版,我發現此技術很有用。 步驟如下:
在兩個模型中都定義了HABTM關系數組之后
這樣創建您的表單
echo $form->create('Job');
echo $form->input('title');
echo $form->input('description');
echo $form->input('location');
echo $form->input('Category');//note the caps and single plural
$form->end('Submit');
然后在控制器的add方法中,只需使用
saveAll($ this-> data)
並且聯接表也將填充所需的記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.