Laravel 8中查询模型时如何选取指定属性并对结果实现分页?
pluck()仅支持传入1~2个字段参数,返回的是一维数组或键值对数组,会直接破坏分页器结构,不适用于你需要保留分页对象的场景only()只能作用于单个模型实例或普通集合,不能直接在查询构造器、分页器对象上调用,所以直接调用不会生效
推荐解决方案(性能最优)
直接在查询阶段通过select()指定需要取出的字段,查出来的模型实例本身就只会携带指定字段,不会有冗余数据:
// 把第四个字段替换成你实际需要的属性名即可 $myRestaurants = Restaurant::active()->valid() ->select('id', 'name', 'icon', '第四个所需字段') ->paginate(10);
备用解决方案(适用于已经查询出全量数据的场景)
如果你的全量查询逻辑不能改动,可以对分页器内置的集合做转换,逐个提取指定字段:
$myRestaurants = Restaurant::active()->valid()->paginate(10); $myRestaurants->getCollection()->transform(function ($restaurant) { return $restaurant->only('id', 'name', 'icon', '第四个所需字段'); });
两种方案得到的分页对象都可以直接传给Livewire组件,不会携带多余的模型属性。
内容的提问来源于stack exchange,提问作者ehsan mohiti
相关产品推荐
相关产品推荐

