1. 程式人生 > >Thinkphp 關聯查詢 詳解 簡單而方便的理解關聯查詢

Thinkphp 關聯查詢 詳解 簡單而方便的理解關聯查詢

關聯查詢

本人使用的是thinkphp3.2.3版本
由於效能問題,新版取消了自動關聯查詢機制,而統一使用relation方法進行關聯操作,relation方法不但可以啟用關聯還可以控制區域性關聯操作,實現了關聯操作一切盡在掌握之中。
所以今天講的主要是relation函式的具體使用方法
由於一對多模型比較適合講解,所以在這裡我將用一對多模型來為大家講解一下relation函式的具體使用方法。

  • 給relation方法傳入引數來控制要關聯查詢的資料表

    資料關聯配置如下
    這裡寫圖片描述

當relation的引數為true時

 $user = new \Home\Model\RelevantModel('Student'
); $data = $user->relation(true)->find(); var_dump($data);

執行結果如下
這裡寫圖片描述

由於本人就關聯了兩個表 一個Subject 一個Test relation方法裡的引數為true時 查詢會把所有的關聯表和它自己本身都查詢出來

當relation的引數為資料表名時時

 $user = new \Home\Model\RelevantModel('Student');
 $data = $user->relation('Subject')->find();
 var_dump($data);

執行結果如下

這裡寫圖片描述

此時只有本身資料和關聯表Subject的資料被查詢出來,所以這裡說明當relation方法的引數為資料表名意思是查詢指定關聯表的內容和本身的內容

  • 這裡我想肯定會有人問如果我只是想查詢關聯表裡的資料該怎麼辦呢

    這其實也非常好解決 thinkphp提供了relationGet方法來幫我們完成這個需求

程式碼如下

 $user = new \Home\Model\RelevantModel('Student');
 $user->relation(true)->find();
 $data = $user->relationGet("Subject");
 var_dump($data
);

效果如下

這裡寫圖片描述

這樣就可以完成了

關聯查詢的方法我就知道這麼多了 如果以後學到更多 我會繼續補充

感謝大家的觀看 謝謝大家