1. 程式人生 > >ThinkPHP中坑爹的關聯模型

ThinkPHP中坑爹的關聯模型

ThinkPHP中的關聯模型極大的方便了我們的資料處理,但是一不留神就會掉進它的坑裡,今天下午有個同事就不幸中招了,這位同事本來想通過關聯模型來查詢資料,一個非常簡單的需求,但查詢出來的資料死活都是空,後來檢視日誌才知道,對映的欄位不對。故在此做個備忘,希望廣大程式設計師們能跳過這個坑。

涉及的關聯模型:HAS_ONE,HAS_MANY,MANY_TO_MANY

眾所周知,在定義以上關聯模型時,需要設定foreign_key屬性,但是這個屬性預設對映的欄位是一個表的主鍵,在ThinkPHP中,主鍵的欄位名稱預設就是id,那麼問題來了,在有些業務流程中,我們希望與foreign_key對映的是我們自定義的欄位,而不是主鍵id,這種情況下,我們只需要增加一個mapping_key屬性即可。注意,它與foreign_key屬性的區別:

foreign_key:屬性值必須是被關聯表中的某個欄位

mapping_key:屬性值必須是主表中的某個欄位