Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách sắp xếp theo dữ liệu bảng tổng hợp trong ORM Eloquent của Laravel

Có 2 cách - một là chỉ định table.field , khác sử dụng bí danh Eloquent pivot_field nếu bạn sử dụng 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

Điều này sẽ hoạt động, vì bí danh Eloquent tất cả các trường được cung cấp trong withPivot dưới dạng pivot_field_name .

Bây giờ, giải pháp chung:

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

Điều này sẽ sắp xếp các truy vấn liên quan.

Lưu ý: Đừng làm cho cuộc sống của bạn trở nên khó khăn với việc đặt tên cho mọi thứ theo cách này. posts không nhất thiết phải là articles , Tôi sẽ sử dụng tên này hoặc tên khác, trừ khi thực sự cần thiết.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tốt nhất để đếm số lượt xem trang trong PHP / MySQL là gì?

  2. Sự khác biệt giữa hai cách tiếp cận bảng nối này?

  3. Ghi đè các giá trị được lập chỉ mục duy nhất

  4. Các cách tốt nhất để sửa chữa bảng InnoDB bị hỏng trong MySQL

  5. Mã lỗi:1290. Máy chủ MySQL đang chạy với tùy chọn --secure-file-priv nên nó không thể thực thi câu lệnh này