尝试与With一起使用时按数据透视表排序数据

时间:2019-01-02 22:42:59

标签: php laravel laravel-5.7

我有桌子Polfzms <- Genes

Polfzm模型具有下一个关系

public function gene()
{
    return $this->belongsTo('App\Gene');
}

我需要从Polfzms表中获取所有数据,并从Genes表中获取数据,并通过name从数据透视表(Genes)中对其进行排序。我接下来尝试

$data = Polfzm::with([
    'gene' => function ($query) {
        $query->orderBy('name', 'asc');
    },
])->get();

,但不按名称排序数据。我该怎么办?

2 个答案:

答案 0 :(得分:0)

您可以尝试在关系定义中进行设置:

Polfzm.php

public function gene()
{
    return $this->belongsTo('App\Gene')->orderBy('name', 'asc');
}

然后在您的控制器中:

$data = Polfzm::with('gene')->get();

答案 1 :(得分:0)

如果我的理解正确,那么您可以为此使用集合sortBy助手。

一个例子可能是:

$data = Polfzm::with('gene')
    ->get()
    ->sortBy(function ($polfzm) {
        return $polfzm->gene->name;
    });