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.