2013-03-17 50 views
0

可以說每本書都有AuthorA和AuthorB字段。 這兩個字段都是authors表的外鍵。CakePHP:指向同一模型的多個鏈接

表字段的作者:id |名稱

表字段:id |名稱| a_author_id | b_author_id |

應該如何設置控制器,模型和視圖以創建一個書籍,其中包含來自作者表的「作者a」和「作者b」的下拉列表?作者-a(和作者-b)的form-input如何看起來像在Book模型的「添加」視圖裏面?

回答

1

您需要在您的Book模型中設置2個belongsTo關聯,併爲Author模型使用不同的別名。

public $belongsTo = array(
    'AAuthor' => array(
     'className' => 'Author', 
     'foreignKey' => 'a_author_id' 
    ), 
    'BAuthor' => array(
     'className' => 'Author', 
     'foreignKey' => 'b_author_id' 
    ) 
); 

使用$this->Book->AAuthor->find('list')得到作者名單,並設置陣列查看和Form->input()選項都a_author_idb_author_id領域使用'options'鍵指定同一陣列。

+0

如果書籍可以有多個作者(不限於固定數量),還可以使用'HasAndBelongsToMany'關係。你將不得不改變數據庫設計來實現這一點,並且在排序/過濾書籍等時可能會有點複雜。 – thaJeztah 2013-03-17 10:21:01

+0

非常感謝!你的快速反應幫助了我很多! =) – Gizzat 2013-03-17 12:02:33