Laravel 只需要从第一个表中链接的第二个表获取数据

我有新闻表,大约有 5000 行,每行都有建筑物 id:


public function building()

{

    return $this->belongsTo(\App\Building::class);

}

所以,建筑物有状态名称。我需要选择所有状态,但仅在任何文章具有该状态时才显示。我试过:


$news->pluck('building.status')->unique()->filter()->toArray();

它工作正常,但占用了大约 70MB 的内存。所以,这不适合我的情况。我找到了一个解决方案,看起来只需要 3mb


News::with(['building' => function($query){ $query->groupBy('status'); }])->get();

但我只需要获取没有任何不同信息的状态,以防止 PHP 端进行过滤。我怎样才能得到它?也许有不同的方式?谢谢!


慕的地10843
浏览 66回答 1
1回答

呼如林

News::with('building')->get()->pluck('building.status')->unique()->values();这称为预加载,因为我们必须指定相关关系来优化 SQL 查询。
打开App,查看更多内容
随时随地看视频慕课网APP