簡體   English   中英

cakephp habtm關系(保存數據)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM