TP5 模型类和Db类的使用区别

 原文:http://upwqy.com/?p=45

总结  

在控制器中  模型操作

 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 时才会是正确的 ,不能够加入其他语句条件

 

posted @ 2017-07-18 08:58  云游云记  阅读(16216)  评论(0编辑  收藏  举报