Det finns två sätt - ett med att specificera table.field
, annan med Eloquent alias pivot_field
om du använder withPivot('field')
:
// if you use withPivot
public function articles()
{
return $this->belongsToMany('Article', 'tops_has_posts')->withPivot('range');
}
// then: (with not whereHas)
$top = Top::with(['articles' => function ($q) {
$q->orderBy('pivot_range', 'asc');
}])->first(); // or get() or whatever
Detta kommer att fungera, eftersom Eloquent aliaser alla fält som tillhandahålls i withPivot
som pivot_field_name
.
Nu, generisk lösning:
$top = Top::with(['articles' => function ($q) {
$q->orderBy('tops_has_posts.range', 'asc');
}])->first(); // or get() or whatever
// or:
$top = Top::first();
$articles = $top->articles()->orderBy('tops_has_posts.range', 'asc')->get();
Detta kommer att ordna den relaterade frågan.
Obs! Gör inte ditt liv svårt med att namnge saker på det här sättet. posts
är inte nödvändigtvis articles
, jag skulle använda antingen det ena eller det andra namnet, om det inte verkligen behövs.