我正試圖在我的應用程序中實現標籤。在數據庫中保存標籤
tags(id, name)
tags_relations (id, tag_id, entity_id)
entity (id, name)
我這裏有一組的4個標籤,我想告訴它作爲一個catgory
菜式 - >早餐,午餐,晚餐,小吃
這實際上是標籤可以對特定實體進行檢查或取消選中。
在另一個領域,我允許用戶輸入標籤逗號分隔。
我只想知道哪種方法可以將其保存到數據庫中?
我使用CakePHP的框架..
我正試圖在我的應用程序中實現標籤。在數據庫中保存標籤
tags(id, name)
tags_relations (id, tag_id, entity_id)
entity (id, name)
我這裏有一組的4個標籤,我想告訴它作爲一個catgory
菜式 - >早餐,午餐,晚餐,小吃
這實際上是標籤可以對特定實體進行檢查或取消選中。
在另一個領域,我允許用戶輸入標籤逗號分隔。
我只想知道哪種方法可以將其保存到數據庫中?
我使用CakePHP的框架..
遵循蛋糕標準:
tags(id, name) tags_entities (id, tag_id, entity_id) entities (id, name)
再烤3個表和蛋糕會自動分配正確的關係。自動生成的代碼將允許您檢查和取消選中標記。如果你想「允許用戶輸入標籤逗號」,你需要編寫更多的代碼來處理它。
這個邏輯代碼應該放在標籤中型號還是在控制器中? bcos我想檢查標籤是否存在獲取id和插入,否則必須插入標籤並獲得id,然後插入關係 –
理想情況下,模型,您在哪裏執行所有數據庫操作。控制器簡單地指導控制流程而不知道數據庫的詳細信息。你可以在Tag模型中編寫一個方法findIDs($ tags_str)。並從實體模型中的saveEntity()中調用它以獲取標籤ID列表。在findIDs()方法中,你也可以有「如果不存在就插入」的邏輯 –
@Harshana:你不需要擔心,CakePhp會自動處理它。儘管如此,請參閱Juhana對您的問題的評論,第二個鏈接 – kaklon
連接表應該命名爲entities_tags
:
連接表的名稱需要包括涉及,按字母順序排列兩種模型的名稱,並用下劃線(_)
HTTP分隔: //book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM和http://book.cakephp.org/view/1034/Saving-Related-Model-Data-HABTM – JJJ