尝试使用With时按数据透视表对数据进行排序



我有表格Polfzms <- Genes

Polfzm模型有下一个关系

public function gene()
{
    return $this->belongsTo('AppGene');
}

我需要从表中获取所有数据Polfzms以及来自Genes表的数据,并按数据透视表(Genes)中的name排序。我接下来试试

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

但它不按名称对数据进行排序。我该怎么做?

您可以尝试在关系定义中设置以下内容:

波尔夫兹姆.php

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

然后在控制器中:

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

如果我理解正确,您可以使用集合sortBy助手。

一个例子可以是:

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

最新更新