原文:http://www.upwqy.com/details/3.html
總結
在控制器中 模型操作
get() 和 all() 只能單獨使用來查詢數據
想要鏈式操作查詢數據 需要使用find() 和select() 這里返回的都是對象集
2017-12-04
另外補充一點,很多人都問 是使用db類還是model 類。
這個其實沒有明確的限定。tp5官網推薦使用model。
我接觸了tp5也將近一年了。大多時間使用的還是model類 ,tp5提供的很多方法都是需要model類 來使用的,比如with 模型關聯,獲取器 等等 比較方便的方法,
而Db類 則針對於 使用比較單一的地方,。比如 獲取配置表中的數據 ,不需要復雜的功能 只是單純的查詢數據,相對於來說使用db類比較好。不需要新建模型文件,直接查詢即可。
還有就是關於DB和model的使用 速度的問題.Db是直接操作sql語句 速度肯定是比model快 但是 相對於model提供的各種方便的功能來說,犧牲一點運行速度是值得的, 而且 使用model帶來的速度影響是在接受范圍內的
更新時間 2017-07-22
准備工作 創建User控制器 User模型 User數據表
在User控制器中
use app\console\model\User as UserModel; $user = UserModel::all(); dump($user); exit(); 這里會輸出數據對象集 表示可用
$user = UserModel::select(); dump($user); exit(); 輸出的也是數據對象集
$user = UserModel::get(); dump($user); exit(); 這里返回到是ID為1用戶 嘗試把ID為1的用戶刪除掉 返回的是ID為2的數據 所以這里直接使用get()不帶參數 會返回一個根據ID正序排列的第一個數據對象
$user = UserModel::find(); dump($user); exit(); 使用find() 和使用 get() 是一樣的用法 單純使用時
$user = UserModel::where('id',5)->get(); dump($user); exit(); 這里會報錯 [ error ] method not exist:think\db\Query->get
$user = UserModel::where('id',5)->find(); dump($user); exit(); 返回用戶ID為5的對象 如果查找的用戶數據不存在會返回null
$user = UserModel::where('id',5)->select(); dump($user); exit(); 返回對象集
$user = UserModel::where('id',5)->all(); dump($user); exit(); 報錯 method not exist:think\db\Query->all
2017-07-18
假如有個Order模型 ,在嘗試使用時有以下結果
使用 self::get();
獲取數據時正確的
self::with('user')->get()
這里會提示 method not exist:think\db\Query->get
只有單獨get 時才會是正確的 ,不能夠加入其他語句條件