sql >> Database >  >> RDS >> Mysql

Hoe te bestellen op draaitabelgegevens in Eloquent ORM van Laravel

Er zijn 2 manieren - een met het specificeren van het table.field , andere gebruiken Eloquent alias pivot_field als u withPivot('field') . gebruikt :

// 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

Dit werkt, omdat Eloquent alle velden in withPivot een alias geeft als pivot_field_name .

Nu, generieke oplossing:

$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();

Hiermee wordt de gerelateerde zoekopdracht geordend.

Opmerking: Maak je leven niet moeilijk door dingen op deze manier te benoemen. posts zijn niet noodzakelijk articles , ik zou de ene of de andere naam gebruiken, tenzij hier echt behoefte aan is.



  1. Galera-clusterbronnen

  2. Breek grote verwijderingsbewerkingen in stukken

  3. MySQL selecteer SUM van resultaten met een LIMIT

  4. postgresql externe sleutel syntaxis