Thinkphp資料模型一對多關聯和多對多關聯
HAS_MANY 關聯表示當前模型擁有多個子物件,例如每個使用者有多篇文章,我們可以這樣來定義
'Article' => array( 'mapping_type' => self::HAS_MANY, 'class_name' => 'Article', 'foreign_key' => 'userId', 'mapping_name' => 'articles', 'mapping_order' => 'create_time desc', // 定義更多的關聯屬性 …… )
MANY_TO_MANY 關聯表示當前模型可以屬於多個物件,而父物件則可能包含有多個子物件,通常兩者之間需要一箇中間表類約束和關聯。例如每個使用者可以屬於多個組,每個組可以有多個使用者:
'Group' => array( 'mapping_type' => self::MANY_TO_MANY, 'class_name' => 'Group', 'mapping_name' => 'groups', 'foreign_key' => 'userId', 'relation_foreign_key' => 'groupId', 'relation_table' => 'think_group_user' //此處應顯式定義中間表名稱,且不能使用C函式讀取表字首 )
由於效能問題,新版取消了自動關聯查詢機制,而統一使用relation方法進行關聯操作,relation方法不但可以啟用關聯還可以控制區域性關聯操作,實現了關聯操作一切盡在掌握之中。
文章來自 www.huthon.com