Ci sono 2 modi:uno con la specifica di table.field
, altri usano l'alias Eloquent pivot_field
se usi 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
Funzionerà, perché Eloquent alias tutti i campi forniti in withPivot
come pivot_field_name
.
Ora, soluzione generica:
$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();
Questo ordinerà la query correlata.
Nota: Non complicarti la vita nominando le cose in questo modo. posts
non sono necessariamente articles
, userei l'uno o l'altro nome, a meno che non ce ne sia davvero bisogno.