TP5 模型類和Db類的使用區別


 原文: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 時才會是正確的 ,不能夠加入其他語句條件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM