Laravel如何一次性获取user_enabled_notifications表的全部id列值
问题解决方法
报错原因说明
UserEnabledNotifications::all() 返回的是 Illuminate\Database\Eloquent\Collection 集合实例,既不是普通数组也不是单条模型对象:
- 执行
dump($notificationData['id'])报错:集合本身没有顶层的id数组下标 - 执行
dump($notificationData->id)报错:集合对象本身没有定义id属性,id是集合内每条单模型实例的属性 - 执行
dump($notificationData[0]['id'])仅能返回单条数据的id:是因为你仅访问了集合下标为0的单条模型数据的id
正确实现方案
方案1:基于已查询到的集合提取所有id
直接调用集合内置的pluck方法提取指定字段的所有值:
// 提取所有id组成集合,如需转普通数组可追加->toArray() $ids = $notificationData->pluck('id'); // 转普通数组写法 $ids = $notificationData->pluck('id')->toArray();
最终得到的结果就是包含所有id的结构:[1,2]
方案2:查询阶段直接提取id(性能更优)
如果你的业务场景只需要id字段,不需要查询表内其他字段,可以直接在查询阶段调用pluck,避免全表查询浪费性能:
// 直接查询得到所有id的集合,转数组追加->toArray()即可 $ids = UserEnabledNotifications::pluck('id');
内容的提问来源于stack exchange,提问作者user16772834
相关产品推荐
相关产品推荐

