Es gibt 2 Möglichkeiten - eine mit Angabe von table.field
, andere verwenden den Eloquent-Alias pivot_field
wenn Sie withPivot('field')
verwenden :
// 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
Dies wird funktionieren, da Eloquent alle in withPivot
bereitgestellten Felder mit einem Alias belegt als pivot_field_name
.
Nun, generische Lösung:
$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();
Dadurch wird die zugehörige Abfrage bestellt.
Hinweis: Machen Sie sich das Leben nicht schwer, wenn Sie Dinge auf diese Weise benennen. posts
sind nicht unbedingt articles
, würde ich entweder den einen oder den anderen Namen verwenden, es sei denn, es besteht wirklich Bedarf dafür.