Eloquent ORM đi kèm với Laravel cung cấp cho bạn một cách dễ dàng để tương tác với cơ sở dữ liệu của bạn. Điều này đơn giản hóa tất cả các hoạt động CRUD [Tạo, đọc, cập nhật và xóa] và bất kỳ truy vấn cơ sở dữ liệu nào khác
Laravel cung cấp rất nhiều phương thức hữu ích mà bạn có thể sử dụng để làm việc với các bộ sưu tập Eloquent của mình. Thông thường, khi nhận được một số kết quả từ cơ sở dữ liệu của bạn, bạn sẽ muốn sắp xếp chúng dựa trên các tiêu chí cụ thể
Trong hướng dẫn này, bạn sẽ học cách sắp xếp thứ tự kết quả của all[]
trong Laravel Eloquent
điều kiện tiên quyết
Trước khi bắt đầu, bạn cần cài đặt và chạy ứng dụng Laravel
Tôi sẽ sử dụng DigitalOcean Ubuntu Droplet cho bản demo này. Nếu muốn, bạn có thể sử dụng mã liên kết của tôi để nhận khoản tín dụng DigitalOcean trị giá 100 đô la miễn phí để khởi động máy chủ của riêng bạn
Nếu bạn chưa có, bạn có thể làm theo các bước từ hướng dẫn này về cách thực hiện điều đó
- Cách cài đặt Laravel trên DigitalOcean với 1 cú nhấp chuột
Hoặc bạn có thể sử dụng tập lệnh tuyệt vời này để thực hiện cài đặt
- larabuồm
Chúng tôi sẽ sử dụng một mô hình có tên là Post
làm ví dụ trong hướng dẫn này
Sắp xếp các kết quả ở cấp độ truy vấn
Trước khi chúng tôi đề cập đến cách sắp xếp kết quả ở cấp độ bộ sưu tập, trước tiên, hãy trình bày ngắn gọn về cách chúng tôi sẽ sắp xếp kết quả ở cấp độ truy vấn
🤩 Nhà tài trợ tuyệt vời của chúng tôi 👇
Xem trang web
DigitalOcean cung cấp giải pháp lưu trữ đám mây đơn giản và đáng tin cậy cho phép các nhà phát triển nhanh chóng thiết lập và chạy trang web hoặc ứng dụng của họXem trang web
Bảng công việc chính thức của Laravel. Tìm các nhà phát triển Laravel giỏi nhất và tài năng nhất bằng cách đăng công việc của bạn trên bảng việc làm chính thức của LaravelXem trang web
Tìm hiểu cách viết mã chuỗi khối của riêng bạn và tạo tiền điện tử của riêng bạn với nền tảng đào tạo trực tuyến thú vị và tương tác CoinCap. Tìm hiểu thêm về chương trình tài trợ DevDojo và xem biểu trưng của bạn tại đây để đưa thương hiệu của bạn đến với hàng nghìn nhà phát triển.Giả sử rằng chúng tôi muốn sắp xếp tất cả các bài đăng của mình theo tên. Khi lấy kết quả từ cơ sở dữ liệu, chúng ta có thể sử dụng phương pháp orderBy
tiếp theo là phương pháp
$posts = Post::orderBy['name']->toSql[];
dd[$posts];
0$posts = Post::orderBy['name']->get[];
Nếu bạn thêm phương thức
$posts = Post::orderBy['name']->toSql[];
dd[$posts];
1 thay vì phương thức $posts = Post::orderBy['name']->toSql[];
dd[$posts];
2 và sử dụng phương thức $posts = Post::orderBy['name']->toSql[];
dd[$posts];
3 để in ra kết quả như sau$posts = Post::orderBy['name']->toSql[];
dd[$posts];
Truy vấn thực tế, bạn sẽ nhận được đầu ra sau
"select * from `posts` order by `name` asc";
Vì vậy, như bạn có thể thấy, phương thức orderBy
thực sự đại diện cho hàm
$posts = Post::orderBy['name']->toSql[];
dd[$posts];
5 trong SQLTheo mặc định, Eloquent sẽ sắp xếp thứ tự tăng dần, nhưng bạn cũng có thể sắp xếp thứ tự giảm dần bằng cách sử dụng phương thức
$posts = Post::orderBy['name']->toSql[];
dd[$posts];
6$posts = Post::orderByDesc['name']->get[];
Để tìm hiểu thêm về SQL, bạn có thể xem Sách điện tử miễn phí này về cách bắt đầu với SQL tại đây
Tuy nhiên, nếu bạn sử dụng all[]
thay vì
$posts = Post::orderBy['name']->toSql[];
dd[$posts];
2, trước tiên bạn sẽ lấy tất cả các mục nhập từ Cơ sở dữ liệu của mình và lưu trữ chúng trong một bộ sưu tập. Và khi bạn đã có bộ sưu tập sẵn sàng, bạn sẽ cần sử dụng các phương pháp có sẵn thay vì các phương pháp hùng biệnSắp xếp các kết quả ở cấp bộ sưu tập với all[]
Để tóm tắt những điều trên, bạn có thể sử dụng các phương thức Eloquent trong khi xây dựng truy vấn của mình, đây sẽ là cách hiệu quả hơn để sắp xếp kết quả của bạn. Nhưng bạn cũng có thể sử dụng các phương pháp thu thập có sẵn để sắp xếp nội dung của một bộ sưu tập
Điều này có nghĩa là ở cấp bộ sưu tập, bạn có thể sử dụng phương pháp
"select * from `posts` order by `name` asc";
0 có sẵn thay vì phương pháp orderBy
có sẵn ở cấp truy vấnTương tự như các phương thức Eqluent, bạn có thể sắp xếp theo thứ tự tăng dần bằng phương thức
"select * from `posts` order by `name` asc";
0 và sắp xếp theo thứ tự giảm dần bằng phương thức "select * from `posts` order by `name` asc";
3- tăng dần
$posts = Post::all[];
$posts->sortBy["name"];
- giảm dần
$posts = Post::all[];
$posts->sortByDesc["name"];
Ngoài ra, bạn cũng có thể xâu chuỗi phương thức
// Ascending
$posts = Post::all[]->sortBy["name"];
//Descending
$posts = Post::all[]->sortByDesc["name"];
Bất cứ khi nào có cơ hội, tôi sẽ sử dụng phương pháp orderBy
, nhưng nó vẫn khá tiện lợi để có thể dễ dàng sắp xếp kết quả của bạn ở cấp độ bộ sưu tập
Phần kết luận
Nếu bạn mới bắt đầu với Laravel, hãy nhớ xem khóa học giới thiệu này tại đây
Bắt đầu với Laravel
Nếu bạn muốn tìm hiểu thêm về PHP nói chung, hãy đảm bảo xem khóa học PHP cơ bản miễn phí này tại đây