我有新闻表,大约有 5000 行,每行都有建筑物 id:public function building(){ return $this->belongsTo(\App\Building::class);}所以,建筑物有状态名称。我需要选择所有状态,但仅在任何文章具有该状态时才显示。我试过:$news->pluck('building.status')->unique()->filter()->toArray();它工作正常,但占用了大约 70MB 的内存。所以,这不适合我的情况。我找到了一个解决方案,看起来只需要 3mbNews::with(['building' => function($query){ $query->groupBy('status'); }])->get();但我只需要获取没有任何不同信息的状态,以防止 PHP 端进行过滤。我怎样才能得到它?也许有不同的方式?谢谢!
1 回答
呼如林
TA贡献1798条经验 获得超3个赞
News::with('building')->get()->pluck('building.status')->unique()->values();
这称为预加载,因为我们必须指定相关关系来优化 SQL 查询。
- 1 回答
- 0 关注
- 65 浏览
添加回答
举报
0/150
提交
取消