sql >> Databáze >  >> RDS >> Mysql

Jak seřadit podle dat kontingenční tabulky v Laravel's Eloquent ORM

Existují 2 způsoby – jeden s uvedením table.field , jiné pomocí alias Eloquent pivot_field pokud použijete 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

Bude to fungovat, protože Eloquent vytvoří aliasy všech polí poskytnutých v withPivot jako pivot_field_name .

Nyní obecné řešení:

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

Tím se seřadí související dotaz.

Poznámka: Nedělejte si život těžkým pojmenováním věcí tímto způsobem. posts nemusí být nutně articles , použil bych buď jedno nebo druhé jméno, pokud to opravdu není potřeba.



  1. jak přidat vlastní adaptér do aktivity, aby se seznam objevil v aktivitě?

  2. Pochopení Pivot Operatoru v SQL

  3. Oficiální technický blog Microsoft Access je nyní online!

  4. scope_identity vs ident_current