Existem 2 maneiras - uma especificando o
table.field
, outros usando o alias do Eloquent pivot_field
se você usar 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
Isso funcionará, porque o Eloquent alias todos os campos fornecidos em
withPivot
como pivot_field_name
. Agora, solução genérica:
$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();
Isso ordenará a consulta relacionada.
Observação: Não torne sua vida difícil nomeando as coisas dessa maneira.
posts
não são necessariamente articles
, eu usaria um ou outro nome, a menos que realmente haja necessidade disso.