sql >> Database teknologi >  >> RDS >> Mysql

Sådan bestiller du efter pivottabeldata i Laravels Eloquent ORM

Der er 2 måder - den ene med at specificere table.field , andet ved hjælp af Eloquent alias pivot_field hvis du bruger 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

Dette vil fungere, fordi Eloquent aliaserer alle felter i withPivot som pivot_field_name .

Nu, generisk løsning:

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

Dette vil bestille den relaterede forespørgsel.

Bemærk: Gør ikke dit liv svært med at navngive ting på denne måde. posts er ikke nødvendigvis articles , jeg ville bruge enten det ene eller det andet navn, medmindre der virkelig er behov for dette.



  1. Android:NullPointerException Kan ikke indlæse database til listevisning i et fragment

  2. Sådan bruger du Decode i Oracle

  3. Hvordan indsætter man billeder fra databasen?

  4. Lagring og analyse af dokumenter på Windows filsystem med SQL Server Semantic Search – Del 2