Đặt hàng bởi Eloquent Laravel 8

Nếu bạn đã thử sử dụng 'orderBy' trên truy vấn đã đặt hàng trước đó trong Laravel, có thể bạn sẽ thấy nó không hoạt động. Có một lý do tuyệt vời cho điều đó, mà chúng tôi sẽ giải thích ở cuối bài viết

Trước tiên, hãy giải quyết cách xóa [hoặc

$user->posts[]->orderBy['updated_at', 'desc']->get[];

1] truy vấn trình tạo

Xóa đơn hàng trong Laravel Query Builder

Hãy tưởng tượng chúng ta có một mối quan hệ đơn giản trên mô hình

$user->posts[]->orderBy['updated_at', 'desc']->get[];

2 với mối quan hệ

$user->posts[]->orderBy['updated_at', 'desc']->get[];

3

public function posts[]

{

return $this->hasMany[Post::class]->latest[];

}

Chúng tôi bao gồm

$user->posts[]->orderBy['updated_at', 'desc']->get[];

4 ở đây, vì có lẽ chúng tôi luôn muốn hiển thị các bài báo mới nhất trước tiên.

$user->posts[]->orderBy['updated_at', 'desc']->get[];

4 là một phạm vi sử dụng

$user->posts[]->orderBy['updated_at', 'desc']->get[];

6 đằng sau hậu trường [

$user->posts[]->orderBy['updated_at', 'desc']->get[];

0]

Bây giờ nếu chúng tôi muốn chỉ định một thứ tự khác với mối quan hệ này, điều này sẽ không hoạt động

$user->posts[]->orderBy['updated_at', 'desc']->get[];

Kết quả từ những điều trên vẫn sẽ được sắp xếp theo thứ tự của

$user->posts[]->orderBy['updated_at', 'desc']->get[];

1

Sắp xếp lại để giải cứu

Vào tháng 3 năm 2020, một phương pháp

$user->posts[]->orderBy['updated_at', 'desc']->get[];

1 đã được thêm vào trình tạo truy vấn. Hãy thêm nó vào

$user->posts[]->reorder[]->orderBy['updated_at', 'desc']->get[];

Phương pháp

$user->posts[]->orderBy['updated_at', 'desc']->get[];

1 xóa mọi đơn đặt hàng

$user->posts[]->orderBy['updated_at', 'desc']->get[];

6 đã đặt trước đó khỏi trình tạo, có nghĩa là bạn đang bắt đầu mới. Vì vậy, bây giờ,

$user->posts[]->orderBy['updated_at', 'desc']->get[];

6 mới của chúng tôi trong ví dụ trên sẽ hoạt động

Bạn cũng có thể chỉ định sắp xếp lại trực tiếp trong phương thức đó. Vì vậy, chúng ta có thể rút ngắn phần trên thành như sau

$user->posts[]->reorder['updated_at', 'desc']->get[];

Điều đó sạch hơn một chút so với xóa thứ tự và sau đó đặt lại

Tại sao orderBy không tự động đặt lại thứ tự?

Trong SQL, dù sao thì bạn cũng có thể chỉ định nhiều đơn đặt hàng, vì vậy hoàn toàn có lý khi

$user->posts[]->orderBy['updated_at', 'desc']->get[];

6 chỉ nối thêm mệnh đề

$user->posts[]->orderBy['updated_at', 'desc']->get[];

7

Vấn đề là khi bạn rõ ràng muốn thay đổi thứ tự

Vì vậy, chức năng mặc định của

$user->posts[]->orderBy['updated_at', 'desc']->get[];

6 hoàn toàn có ý nghĩa. Chúng tôi chỉ cần một cách để xóa nó và bắt đầu làm mới nếu trước đó chúng tôi đã xác định thứ tự theo mệnh đề

Trong đoạn trích ngắn này, bạn sẽ tìm hiểu cách sắp xếp thứ tự các bản ghi Laravel Eloquent của mình theo thứ tự "tăng dần" hoặc "giảm dần", vì vậy hãy bắt đầu nào

Thứ tự Laravel theo một cột


Để đặt hàng bằng cách sử dụng một cột, bạn có thể gọi phương thức "orderBy[]" và chuyển vào "cột" để đặt hàng. Theo mặc định, điều này sẽ sắp xếp nó theo thứ tự "Tăng dần". Hãy tham khảo mã dưới đây cho ví dụ này.
orderBy['published_at']
    ->get[];

Để đặt thứ tự giảm dần, bạn có thể viết mã của mình như sau

________số 8

Thứ tự Laravel theo hai cột


Để sắp xếp theo hai cột trở lên, bạn chỉ cần xâu chuỗi phương thức như bên dưới.
orderBy['published_at', 'desc'] // DESC
    ->orderBy['user_id'] // ASC
    ->get[];

// For an alternative you can make use the "orderByDesc" method.
Post::query[]
    ->orderByDesc['published_at', 'desc'] // DESC
    ->orderBy['user_id'] // ASC
    ->get[];

Đặt hàng theo bộ sưu tập Eloquent


Nếu bạn đã có bộ sưu tập hùng hồn, chẳng hạn như bằng cách sử dụng "all[]" và sau đó xâu chuỗi nó bằng phương thức "sortBy[]". Xin lưu ý rằng cách sắp xếp này kém hiệu quả hơn việc gọi phương thức "orderBy" có sẵn cho Trình tạo truy vấn.

$user->posts[]->orderBy['updated_at', 'desc']->get[];

0

Làm cách nào để đặt thứ tự tăng dần trong Laravel?

Mệnh đề ORDERBY được sử dụng để sắp xếp các cột trong bảng theo thứ tự tăng dần hoặc giảm dần. Mặc định nó sắp xếp các cột theo thứ tự tăng dần, nếu cần sắp xếp giảm dần thì dùng DSC kèm theo mệnh đề.

Làm cách nào để tìm nạp dữ liệu theo thứ tự giảm dần trong Laravel?

Nếu bạn muốn sắp xếp dữ liệu theo thứ tự Giảm dần và Tăng dần trong Laravel 5. 6 nó chỉ là mã đơn giản như thế này. Lượt xem. nhà soạn nhạc['*',function[$view]{ $view->with['services', Dịch vụ. mới nhất[]->get[]];

Trình tạo truy vấn có nhanh hơn Eloquent không?

ORM Eloquent phù hợp nhất khi làm việc với ít dữ liệu hơn trong một bảng cụ thể. Mặt khác, trình tạo truy vấn mất ít thời gian hơn để xử lý nhiều dữ liệu dù trong một hay nhiều bảng nhanh hơn Eloquent ORM . Trong trường hợp của tôi, tôi sử dụng ELoquent ORM trong một ứng dụng có các bảng chứa ít hơn 17500 mục nhập.

ORM Laravel 8 hùng hồn là gì?

Eloquent là một trình ánh xạ quan hệ đối tượng [ORM] được bao gồm theo mặc định trong khung Laravel . ORM là phần mềm hỗ trợ xử lý các bản ghi cơ sở dữ liệu bằng cách biểu diễn dữ liệu dưới dạng các đối tượng, hoạt động như một lớp trừu tượng trên cùng của công cụ cơ sở dữ liệu được sử dụng để lưu trữ dữ liệu của ứng dụng.

Chủ Đề