Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да поръчате по данни от централна таблица в Eloquent ORM на Laravel

Има 2 начина - единият с посочване на table.field , други използват псевдоним Eloquent pivot_field ако използвате 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

Това ще работи, защото Eloquent използва псевдоними на всички полета, предоставени в withPivot като pivot_field_name .

Сега общо решение:

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

Това ще подреди свързаната заявка.

Забележка: Не си затруднявайте живота с назоваването на нещата по този начин. posts не са непременно articles , бих използвал едното или другото име, освен ако наистина няма нужда от това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. УНИКАЛНО ограничение, само когато поле съдържа конкретна стойност

  2. Как да свържа html страници към mysql база данни?

  3. android.content.res.Resources$NotFoundException:низ на ресурс с идентификатор #0x2 база данни

  4. MySQL - принудително да не се използва кеш за тестване на скоростта на заявката

  5. За влизане GET или POST?