DeTechn Blog

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

使用总结

在控制器中模型操作
get() 和 all()只能单独使用来查询数据
想要链式操作查询数据 需要使用find() 和select() 这里返回的都是对象集

在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

假如有个Order模型 ,在尝试使用时有以下结果

使用 self::get();

'获取数据时正确的
self::with('user')->get()
'这里会提示 method not exist:think\db\Query->get

'只有单独get 时才会是正确的 ,不能够加入其他语句条件

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »