Il y a 2 façons - une avec la spécification de table.field
, autre utilisant l'alias Eloquent pivot_field
si vous utilisez 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
Cela fonctionnera, car Eloquent alias tous les champs fournis dans withPivot
comme pivot_field_name
.
Maintenant, solution générique :
$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();
Cela ordonnera la requête associée.
Remarque : Ne vous compliquez pas la vie en nommant les choses de cette façon. posts
ne sont pas nécessairement des articles
, j'utiliserais l'un ou l'autre nom, à moins que cela ne soit vraiment nécessaire.