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

I have tables Polfzms <- Genes

Polfzm model have next relation

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

I need get all data from Polfzms table with data from Genes table and order it by name from pivot table (Genes). I try next

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

but it not order data by name. How can I do it?

You could try to set this in the relationship definition:

Polfzm.php

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

Then in your controller:

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

If I understand correctly, you could use a collection sortBy helper for this one.

An example could be:

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