Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara memesan berdasarkan data tabel pivot di Eloquent ORM Laravel

Ada 2 cara - satu dengan menentukan table.field , lainnya menggunakan alias Eloquent pivot_field jika Anda menggunakan 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

Ini akan berfungsi, karena Eloquent alias semua bidang yang disediakan di withPivot sebagai pivot_field_name .

Sekarang, solusi umum:

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

Ini akan memesan kueri terkait.

Catatan: Jangan membuat hidup Anda sulit dengan menamai hal-hal seperti ini. posts belum tentu articles , saya akan menggunakan salah satu atau nama lainnya, kecuali jika benar-benar diperlukan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyimpan array ke mysql?

  2. Bagaimana cara membuat indeks DESC di MySQL?

  3. MySQL Group_Concat() vs T-SQL String_Agg()

  4. Bagaimana cara memeriksa apakah mysqli_query menghapus baris apa pun

  5. MySQL masukkan ke DATETIME:apakah aman menggunakan format ISO::8601?