数据库模型问题,如何知道有没有数据?

比如:获取用户表的数据
$users=User::get();
$users=User::all();
这获取到的都是集合,每次我都需要将集合转成数组再判断是否有数据,有没有好的方法判断表里面有没有数据?
除了get和all还有没有其他方法获取表里面数据的?
我还想问下这get 和 all 有什么区别吗?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案
$users = User::get(); // 这里返回的是一个 Illuminate\Database\Eloquent\Collection 类
$users = User::all(); // 这里返回的也是 Collection 类

这个判断是否有数据,是先取出数据,再用 Collection 的方法判断:

$have_models = User::where('name', $name)->get()->isEmpty();

这个是通过在sql中执行 select exists 查询返回的结果:

$have_models = User::where('name', $name)->exists(); 

其他方法:

$user = User::first(); // 返回表中第一条数据
$user = User::find($id); // 查找指定id的数据
$user = User::findMany($ids); // 查找多个id对应的数据

区别:

  • 如果通过「模型::」的静态方式使用,没有区别。
  • 如果模型后面带有where()等查询条件,则最后只能用get()获取数据。
3年前 评论
LiamHao (作者) 3年前
donggan (楼主) 3年前
donggan (楼主) 3年前
donggan (楼主) 3年前
LiamHao (作者) 3年前
donggan (楼主) 3年前
donggan (楼主) 3年前
讨论数量: 4
3年前 评论
donggan (楼主) 3年前
小猪蹄子 (作者) 3年前

集合方法里面有很多实用的方法,建议去了解一下 集合《Laravel 8 中文文档》 file

3年前 评论
$users = User::get(); // 这里返回的是一个 Illuminate\Database\Eloquent\Collection 类
$users = User::all(); // 这里返回的也是 Collection 类

这个判断是否有数据,是先取出数据,再用 Collection 的方法判断:

$have_models = User::where('name', $name)->get()->isEmpty();

这个是通过在sql中执行 select exists 查询返回的结果:

$have_models = User::where('name', $name)->exists(); 

其他方法:

$user = User::first(); // 返回表中第一条数据
$user = User::find($id); // 查找指定id的数据
$user = User::findMany($ids); // 查找多个id对应的数据

区别:

  • 如果通过「模型::」的静态方式使用,没有区别。
  • 如果模型后面带有where()等查询条件,则最后只能用get()获取数据。
3年前 评论
LiamHao (作者) 3年前
donggan (楼主) 3年前
donggan (楼主) 3年前
donggan (楼主) 3年前
LiamHao (作者) 3年前
donggan (楼主) 3年前
donggan (楼主) 3年前

如下 $users = User::has('book')->get(); $arr=array(); foreach ($users as $user) { $tmp = $user->book()->get()->toArray(); foreach ($tmp as $book){ $arr[] = $book; } } 上面得出的数组,只有表book的字段 user_id, title值,我想得出的数组带有 用户名的数据,就是带有user表里面的username字段的数据

3年前 评论
LiamHao 3年前
LiamHao 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!