Php Laravel-与映射函数的关系上的orderBy名称

Php Laravel-与映射函数的关系上的orderBy名称,php,laravel,Php,Laravel,我正在寻找使用关系、map函数和toArray()按字母顺序排列制造商列表的解决方案。下面是代码示例: $manufacturers = Manufacturer::with('translation') ->get() ->map(function ($m) { return ['key' => $m->getName(), 'value' => $m->id]; }) ->pluck('key', 'value') ->

我正在寻找使用关系、
map
函数和
toArray()
按字母顺序排列制造商列表的解决方案。下面是代码示例:

$manufacturers = Manufacturer::with('translation')
->get()
->map(function ($m) {
      return ['key' => $m->getName(), 'value' => $m->id];
      })
->pluck('key', 'value')
->prepend('Choose manufaturer', '')
->toArray();
随后,将在视图中创建选择列表:

我已尝试将orderBy添加到翻译中,如下所示:

$manufacturers = Manufacturer::with(['translation' => function ($q) {
  $q->orderBy('name', 'ASC');
}])->get()  
// code cutted here (same as above)
代码没有显示错误,但它没有排序。我猜每个制造商的收藏都有自己的翻译,而且每个制造商的订购量要比整个列表中的订购量大

以下是dd($制造商):


我还考虑了两种解决方案——像其他开发人员在stackoverflow或php中的sort上所做的那样,将join添加到查询中,这似乎是个坏主意。是否有“简单的”解决这个问题的方法?

你在<代码> >获取< <代码>之后尝试使用<代码>命令> >否?也许考虑做左连接,而不是<代码> >函数($q)< /COD> >你尝试过<代码> OrthBuy <代码> >代码< >代码>吗?如果没有,可以考虑做左连接,而不是<代码> =函数($q)< /代码>。