“Cách sử dụng truy vấn Eloquent Distinct với truy vấn Count trong Laravel,Laravel Distinct Count,Count trong Eloquent với khác biệt trong Laravel”
Hôm nay tôi sẽ cho bạn biết Cách sử dụng Eloquent Distinct query với Count query trong Laravel
Eloquent riêng biệt và đếm truy vấn đếm dữ liệu duy nhất
DB::table['tablename']->distinct['name']->count['name'];
Hôm nay, chúng tôi muốn chia sẻ với các bạn Laravel 6 chọn riêng biệt và sắp xếp theo thứ tự. Trong bài đăng này, chúng tôi sẽ cho bạn thấy sự khác biệt với thứ tự của laravel, nghe đối với laravel chọn nhiều cột riêng biệt, chúng tôi sẽ cung cấp cho bạn bản demo và ví dụ để thực hiện. Trong bài đăng này, chúng ta sẽ tìm hiểu về bộ sưu tập laravel khác biệt với một ví dụ
Laravel 6 chọn khác biệt và sắp xếp theo
nội dung
- Laravel 6 chọn khác biệt và sắp xếp theo
- Truy vấn theo thứ tự của Laravel với sự khác biệt
- Đọc
- Tóm lược
- Bài viết liên quan
Có những điều sau Đơn giản Giới thiệu về Laravel 6 Mệnh đề DISTINCT, ORDER BY, GROUP BY, HAVING Thông tin đầy đủ Với ví dụ và mã nguồn
Vì tôi sẽ giới thiệu Bài đăng này với ví dụ Làm việc trực tiếp để phát triển laravel tham gia hai bảng, do đó, nhóm eloquent của laravel được sử dụng cho ví dụ này như bên dưới
Trình xây dựng truy vấn cơ sở dữ liệu của Laravel cung cấp một giao diện thuận tiện, trôi chảy để tạo và chạy các truy vấn cơ sở dữ liệu. Nó có thể được sử dụng để thực hiện hầu hết các hoạt động cơ sở dữ liệu trong ứng dụng của bạn và hoạt động hoàn hảo với tất cả các hệ thống cơ sở dữ liệu được Laravel hỗ trợ
Trình tạo truy vấn Laravel sử dụng liên kết tham số PDO để bảo vệ ứng dụng của bạn khỏi các cuộc tấn công SQL injection. Không cần làm sạch hoặc khử trùng các chuỗi được chuyển đến trình tạo truy vấn dưới dạng liên kết truy vấn
Cảnh báo
PDO không hỗ trợ tên cột ràng buộc. Do đó, bạn không bao giờ nên cho phép đầu vào của người dùng đọc tên cột được truy vấn của bạn tham chiếu, bao gồm cả cột "sắp xếp theo".
Chạy truy vấn cơ sở dữ liệu
Lấy tất cả các hàng từ một bảng
Bạn có thể sử dụng phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
3 được cung cấp bởi mặt tiền DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
4 để bắt đầu truy vấn. Phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
3 trả về một phiên bản trình tạo truy vấn trôi chảy cho bảng đã cho, cho phép bạn xâu chuỗi nhiều ràng buộc hơn vào truy vấn và cuối cùng truy xuất kết quả của truy vấn bằng phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
6namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
class UserController extends Controller
* Show a list of all of the application's users.
* @return \Illuminate\Http\Response
$users = DB::table['users']->get[];
return view['user.index', ['users' => $users]];
Phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
6 trả về một phiên bản DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
8 chứa các kết quả của truy vấn trong đó mỗi kết quả là một phiên bản của đối tượng PHP DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
9. Bạn có thể truy cập giá trị của từng cột bằng cách truy cập cột dưới dạng thuộc tính của đối tượnguse Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
Lưu ý
Các bộ sưu tập của Laravel cung cấp nhiều phương thức cực kỳ mạnh mẽ để ánh xạ và thu gọn dữ liệu. Để biết thêm thông tin về các bộ sưu tập Laravel, hãy xem tài liệu về bộ sưu tập.
Truy xuất một hàng/cột từ một bảng
Nếu bạn chỉ cần truy xuất một hàng từ bảng cơ sở dữ liệu, bạn có thể sử dụng phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
01 của mặt tiền DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
4. Phương thức này sẽ trả về một đối tượng DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
9 duy nhấtDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
3Nếu bạn không cần toàn bộ hàng, bạn có thể trích xuất một giá trị từ bản ghi bằng phương pháp
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
03. Phương thức này sẽ trả về giá trị của cột trực tiếpDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
5Để truy xuất một hàng theo giá trị cột
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
04 của nó, hãy sử dụng phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
05DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
8Truy xuất danh sách các giá trị cột
Nếu bạn muốn truy xuất một phiên bản
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
8 chứa các giá trị của một cột, bạn có thể sử dụng phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
07. Trong ví dụ này, chúng tôi sẽ truy xuất một bộ sưu tập tiêu đề người dùngDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
1Bạn có thể chỉ định cột mà bộ sưu tập kết quả sẽ sử dụng làm khóa của nó bằng cách cung cấp đối số thứ hai cho phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
07DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
3Kết quả Chunking
Nếu bạn cần làm việc với hàng nghìn bản ghi cơ sở dữ liệu, hãy cân nhắc sử dụng phương pháp
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
09 do mặt tiền DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
4 cung cấp. Phương pháp này truy xuất một đoạn nhỏ kết quả tại một thời điểm và đưa từng đoạn đó vào một bao đóng để xử lý. Ví dụ: hãy truy xuất toàn bộ bảng use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
11 theo khối 100 bản ghi cùng một lúcDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
7Bạn có thể ngăn các khối tiếp theo được xử lý bằng cách trả lại
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
12 từ quá trình đóngDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
9Nếu bạn đang cập nhật bản ghi cơ sở dữ liệu trong khi phân đoạn kết quả, kết quả phân đoạn của bạn có thể thay đổi theo những cách không mong muốn. Nếu bạn dự định cập nhật các bản ghi đã truy xuất trong khi phân đoạn dữ liệu, tốt nhất bạn nên sử dụng phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
13 để thay thế. Phương pháp này sẽ tự động phân trang kết quả dựa trên khóa chính của bản ghiDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
Cảnh báo
Khi cập nhật hoặc xóa bản ghi bên trong hàm gọi lại đoạn mã, bất kỳ thay đổi nào đối với khóa chính hoặc khóa ngoại đều có thể ảnh hưởng đến truy vấn đoạn mã. Điều này có khả năng dẫn đến việc các bản ghi không được đưa vào kết quả phân đoạn.
Truyền kết quả một cách lười biếng
Phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
14 hoạt động tương tự như phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
09 theo nghĩa là nó thực thi truy vấn theo khối. Tuy nhiên, thay vì chuyển từng đoạn vào một cuộc gọi lại, phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
16 trả về một use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
17, cho phép bạn tương tác với các kết quả dưới dạng một luồng đơn lẻuse Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
0Một lần nữa, nếu bạn dự định cập nhật các bản ghi đã truy xuất trong khi lặp lại chúng, thì tốt nhất là sử dụng các phương pháp
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
18 hoặc use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
19 để thay thế. Các phương thức này sẽ tự động phân trang kết quả dựa trên khóa chính của bản ghiuse Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
1Cảnh báo
Khi cập nhật hoặc xóa bản ghi trong khi lặp lại chúng, mọi thay đổi đối với khóa chính hoặc khóa ngoại có thể ảnh hưởng đến truy vấn đoạn. Điều này có khả năng dẫn đến các bản ghi không được đưa vào kết quả.
uẩn
Trình tạo truy vấn cũng cung cấp nhiều phương thức để truy xuất các giá trị tổng hợp như
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
20, use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
21, use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
22, use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
23 và use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
24. Bạn có thể gọi bất kỳ phương thức nào sau khi xây dựng truy vấn của mìnhuse Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
2Tất nhiên, bạn có thể kết hợp các phương pháp này với các mệnh đề khác để tinh chỉnh cách tính giá trị tổng hợp của mình
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
3Xác định nếu hồ sơ tồn tại
Thay vì sử dụng phương pháp
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
20 để xác định xem có bản ghi nào phù hợp với các ràng buộc của truy vấn của bạn hay không, bạn có thể sử dụng phương pháp use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
26 và use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
27use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
4Chọn báo cáo
Chỉ định một mệnh đề chọn
Bạn có thể không phải lúc nào cũng muốn chọn tất cả các cột từ bảng cơ sở dữ liệu. Sử dụng phương pháp
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
28, bạn có thể chỉ định mệnh đề "chọn" tùy chỉnh cho truy vấnuse Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
5Phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
29 cho phép bạn buộc truy vấn trả về các kết quả khác biệtuse Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
6Nếu bạn đã có một phiên bản trình tạo truy vấn và bạn muốn thêm một cột vào mệnh đề chọn hiện có của nó, bạn có thể sử dụng phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
30use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
7biểu thức thô
Đôi khi bạn có thể cần chèn một chuỗi tùy ý vào truy vấn. Để tạo biểu thức chuỗi thô, bạn có thể sử dụng phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
31 được cung cấp bởi mặt tiền DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
4use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
8Cảnh báo
Các câu lệnh thô sẽ được đưa vào truy vấn dưới dạng chuỗi, vì vậy bạn phải cực kỳ cẩn thận để tránh tạo lỗ hổng SQL injection.
phương pháp thô
Thay vì sử dụng phương pháp
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
33, bạn cũng có thể sử dụng các phương pháp sau để chèn một biểu thức thô vào các phần khác nhau của truy vấn của mình. Hãy nhớ rằng, Laravel không thể đảm bảo rằng bất kỳ truy vấn nào sử dụng biểu thức thô đều được bảo vệ trước các lỗ hổng SQL injectionuse Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
34
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
Phương pháp
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
34 có thể được sử dụng thay cho use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
36. Phương thức này chấp nhận một mảng liên kết tùy chọn làm đối số thứ hai của nóuse Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
9use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
37
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
Các phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
38 và use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
39 có thể được sử dụng để đưa mệnh đề "where" thô vào truy vấn của bạn. Các phương thức này chấp nhận một mảng liên kết tùy chọn làm đối số thứ hai của chúngDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
30use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
40
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
Các phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
41 và use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
42 có thể được sử dụng để cung cấp một chuỗi thô làm giá trị của mệnh đề "có". Các phương thức này chấp nhận một mảng liên kết tùy chọn làm đối số thứ hai của chúngDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
31use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
43
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
Phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
43 có thể được sử dụng để cung cấp một chuỗi thô làm giá trị của mệnh đề "order by"DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
32use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
45
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
Phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
45 có thể được sử dụng để cung cấp một chuỗi thô làm giá trị của mệnh đề use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
47DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
33tham gia
Mệnh đề tham gia bên trong
Trình tạo truy vấn cũng có thể được sử dụng để thêm mệnh đề nối vào truy vấn của bạn. Để thực hiện "liên kết bên trong" cơ bản, bạn có thể sử dụng phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
48 trên phiên bản trình tạo truy vấn. Đối số đầu tiên được truyền cho phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
48 là tên của bảng mà bạn cần nối, trong khi các đối số còn lại chỉ định các ràng buộc cột cho phép nối. Bạn thậm chí có thể tham gia nhiều bảng trong một truy vấnDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
34Tham gia bên trái / Điều khoản tham gia bên phải
Nếu bạn muốn thực hiện "nối trái" hoặc "nối phải" thay vì "nối bên trong", hãy sử dụng các phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
50 hoặc use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
51. Các phương thức này có cùng chữ ký với phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
48DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
35Điều khoản tham gia chéo
Bạn có thể sử dụng phương pháp
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
53 để thực hiện "liên kết chéo". Tham gia chéo tạo ra một sản phẩm cartesian giữa bảng đầu tiên và bảng đã tham giaDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
36Điều khoản tham gia nâng cao
Bạn cũng có thể chỉ định các mệnh đề nối nâng cao hơn. Để bắt đầu, hãy chuyển một bao đóng làm đối số thứ hai cho phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
48. Việc đóng sẽ nhận được một phiên bản use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
55 cho phép bạn chỉ định các ràng buộc đối với mệnh đề "tham gia"DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
37Nếu bạn muốn sử dụng mệnh đề "where" trong các liên kết của mình, bạn có thể sử dụng các phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56 và use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
57 được cung cấp bởi đối tượng use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
58. Thay vì so sánh hai cột, các phương thức này sẽ so sánh cột với một giá trịDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
38Tham gia truy vấn con
Bạn có thể sử dụng các phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
59, use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
60 và use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
61 để nối truy vấn với truy vấn con. Mỗi phương thức này nhận được ba đối số. truy vấn con, bí danh bảng của nó và một bao đóng xác định các cột liên quan. Trong ví dụ này, chúng tôi sẽ truy xuất một tập hợp người dùng trong đó mỗi bản ghi người dùng cũng chứa dấu thời gian use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
62 của bài đăng blog được xuất bản gần đây nhất của người dùngDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
39đoàn thể
Trình tạo truy vấn cũng cung cấp một phương thức thuận tiện để "kết hợp" hai hoặc nhiều truy vấn lại với nhau. Ví dụ: bạn có thể tạo một truy vấn ban đầu và sử dụng phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
63 để kết hợp truy vấn đó với nhiều truy vấn hơnDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
50Ngoài phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
63, trình xây dựng truy vấn cung cấp phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
65. Các truy vấn được kết hợp bằng phương pháp use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
65 sẽ không bị xóa các kết quả trùng lặp. Phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
65 có chữ ký phương thức giống như phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
63Các mệnh đề cơ bản
mệnh đề ở đâu
Bạn có thể sử dụng phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56 của trình tạo truy vấn để thêm mệnh đề "where" vào truy vấn. Cuộc gọi cơ bản nhất đến phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56 yêu cầu ba đối số. Đối số đầu tiên là tên của cột. Đối số thứ hai là một toán tử, có thể là bất kỳ toán tử nào được cơ sở dữ liệu hỗ trợ. Đối số thứ ba là giá trị để so sánh với giá trị của cộtVí dụ: truy vấn sau truy xuất những người dùng có giá trị của cột
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
71 bằng use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
72 và giá trị của cột use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
73 lớn hơn use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
74DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
51Để thuận tiện, nếu bạn muốn xác minh rằng một cột là
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
75 với một giá trị nhất định, bạn có thể chuyển giá trị đó làm đối số thứ hai cho phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56. Laravel sẽ cho rằng bạn muốn sử dụng toán tử use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
75DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
52Như đã đề cập trước đây, bạn có thể sử dụng bất kỳ toán tử nào được hệ thống cơ sở dữ liệu của bạn hỗ trợ
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
53Bạn cũng có thể chuyển một loạt các điều kiện cho hàm
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56. Mỗi phần tử của mảng phải là một mảng chứa ba đối số thường được truyền cho phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
54Cảnh báo
PDO không hỗ trợ tên cột ràng buộc. Do đó, bạn không bao giờ nên cho phép đầu vào của người dùng đọc tên cột được truy vấn của bạn tham chiếu, bao gồm cả cột "sắp xếp theo".
Hoặc mệnh đề Where
Khi xâu chuỗi các lệnh gọi đến phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56 của trình tạo truy vấn, các mệnh đề "where" sẽ được nối với nhau bằng cách sử dụng toán tử use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
81. Tuy nhiên, bạn có thể sử dụng phương pháp use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
57 để nối một mệnh đề vào truy vấn bằng cách sử dụng toán tử use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
83. Phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
57 chấp nhận các đối số giống như phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
51Nếu bạn cần nhóm một điều kiện "hoặc" trong ngoặc đơn, bạn có thể chuyển một bao đóng làm đối số đầu tiên cho phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
57DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
56Ví dụ trên sẽ tạo ra SQL sau
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
57Cảnh báo
Bạn phải luôn nhóm các cuộc gọi57 để tránh hành vi không mong muốn khi áp dụng phạm vi toàn cầu.
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
Mệnh đề Where Not
Các phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
88 và use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
89 có thể được sử dụng để phủ nhận một nhóm ràng buộc truy vấn nhất định. Ví dụ: truy vấn sau loại trừ các sản phẩm đang được thanh lý hoặc có giá thấp hơn mườiDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
58Mệnh đề JSON ở đâu
Laravel cũng hỗ trợ truy vấn các loại cột JSON trên cơ sở dữ liệu cung cấp hỗ trợ cho các loại cột JSON. Hiện tại, điều này bao gồm MySQL 5. 7+, PostgreSQL, SQL Server 2016 và SQLite 3. 39. 0 [có phần mở rộng JSON1]. Để truy vấn một cột JSON, hãy sử dụng toán tử
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
90DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
59Bạn có thể sử dụng
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
91 để truy vấn các mảng JSON. Tính năng này không được hỗ trợ bởi các phiên bản cơ sở dữ liệu SQLite nhỏ hơn 3. 38. 0DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
80Nếu ứng dụng của bạn sử dụng cơ sở dữ liệu MySQL hoặc PostgreSQL, bạn có thể chuyển một mảng giá trị cho phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
91DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
81Bạn có thể sử dụng phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
93 để truy vấn các mảng JSON theo độ dài của chúngDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
82Các mệnh đề bổ sung
ở đâuGiữa / hoặc ở đâuGiữa
Phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
94 xác minh rằng giá trị của cột nằm giữa hai giá trịDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
83whereNotBetween / hoặc WhereNotBetween
Phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
95 xác minh rằng giá trị của cột nằm ngoài hai giá trịDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
84whereBetweenColumns / where NotBetweenColumns / or WhereBetweenColumns / or Where NotBetweenColumns
Phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
96 xác minh rằng giá trị của một cột nằm giữa hai giá trị của hai cột trong cùng một hàng của bảngDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
85Phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
97 xác minh rằng giá trị của một cột nằm ngoài hai giá trị của hai cột trong cùng một hàng của bảngDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
86đâuIn/đâuKhôngVào/hoặcĐâuVào/hoặcĐâuKhôngVào
Phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
98 xác minh rằng giá trị của một cột nhất định được chứa trong mảng đã choDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
51Phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
99 xác minh rằng giá trị của cột đã cho không có trong mảng đã choDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
88Bạn cũng có thể cung cấp một đối tượng truy vấn làm đối số thứ hai của phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
98DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
89Ví dụ trên sẽ tạo ra SQL sau
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
10Cảnh báo
Nếu bạn đang thêm một mảng lớn các liên kết số nguyên vào truy vấn của mình, các phương thức301 hoặc
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
302 có thể được sử dụng để giảm đáng kể mức sử dụng bộ nhớ của bạn.
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
whereNull / whereNotNull / orWhereNull / orWhereNotNull
Phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
303 xác minh rằng giá trị của cột đã cho là DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
304DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
11Phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
305 xác minh rằng giá trị của cột không phải là DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
304DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
12whereDate/whereMonth/whereDay/whereYear/whereTime
Phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
307 có thể được sử dụng để so sánh giá trị của một cột với một ngàyDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
13Phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
308 có thể được sử dụng để so sánh giá trị của một cột với một tháng cụ thểDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
14Phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
309 có thể được sử dụng để so sánh giá trị của một cột với một ngày cụ thể trong thángDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
15Phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
310 có thể được sử dụng để so sánh giá trị của một cột với một năm cụ thểDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
16Phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
311 có thể được sử dụng để so sánh giá trị của một cột với một thời điểm cụ thểDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
17WhereColumn / hoặc WhereColumn
Phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
312 có thể được sử dụng để xác minh rằng hai cột bằng nhauDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
18Bạn cũng có thể chuyển một toán tử so sánh cho phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
312DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
19Bạn cũng có thể chuyển một mảng so sánh cột cho phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
312. Các điều kiện này sẽ được nối bằng cách sử dụng toán tử use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
81DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
30Nhóm hợp lý
Đôi khi, bạn có thể cần phải nhóm một số mệnh đề "ở đâu" trong dấu ngoặc đơn để đạt được nhóm logic mong muốn của truy vấn của bạn. Trên thực tế, bạn thường nên nhóm các cuộc gọi đến phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
57 trong ngoặc đơn để tránh hành vi truy vấn không mong muốn. Để thực hiện điều này, bạn có thể chuyển một bao đóng cho phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
31Như bạn có thể thấy, việc chuyển một bao đóng vào phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56 sẽ hướng dẫn trình tạo truy vấn bắt đầu một nhóm ràng buộc. Việc đóng sẽ nhận được một phiên bản trình tạo truy vấn mà bạn có thể sử dụng để đặt các ràng buộc nên có trong nhóm dấu ngoặc đơn. Ví dụ trên sẽ tạo ra SQL sauDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
32Cảnh báo
Bạn phải luôn nhóm các cuộc gọi57 để tránh hành vi không mong muốn khi áp dụng phạm vi toàn cầu.
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
Mệnh đề nâng cao
Các mệnh đề tồn tại ở đâu
Phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
320 cho phép bạn viết các mệnh đề SQL "ở đâu tồn tại". Phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
320 chấp nhận một bao đóng sẽ nhận một phiên bản trình tạo truy vấn, cho phép bạn xác định truy vấn sẽ được đặt bên trong mệnh đề "tồn tại"DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
33Truy vấn trên sẽ tạo ra SQL sau
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
34Truy vấn con mệnh đề Where
Đôi khi, bạn có thể cần xây dựng mệnh đề "where" để so sánh kết quả của một truy vấn phụ với một giá trị đã cho. Bạn có thể thực hiện điều này bằng cách chuyển một bao đóng và một giá trị cho phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56. Ví dụ: truy vấn sau sẽ truy xuất tất cả người dùng có "tư cách thành viên" gần đây của một loại nhất định;DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
35Hoặc, bạn có thể cần xây dựng mệnh đề "where" để so sánh một cột với kết quả của truy vấn con. Bạn có thể thực hiện việc này bằng cách chuyển một cột, toán tử và bao đóng cho phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56. Ví dụ: truy vấn sau đây sẽ truy xuất tất cả các bản ghi thu nhập có số tiền nhỏ hơn mức trung bình;DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
36Toàn văn Where Mệnh đề
Cảnh báo
Toàn văn nơi các mệnh đề hiện được hỗ trợ bởi MySQL và PostgreSQL.
Các phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
324 và DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
325 có thể được sử dụng để thêm mệnh đề "where" toàn văn vào truy vấn cho các cột có chỉ mục toàn văn. Các phương thức này sẽ được Laravel chuyển đổi thành SQL thích hợp cho hệ thống cơ sở dữ liệu bên dưới. Ví dụ: một mệnh đề DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
326 sẽ được tạo cho các ứng dụng sử dụng MySQLDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
37Đặt hàng, Nhóm, Giới hạn & Offset
đặt hàng
Phương pháp DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
327
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
Phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
327 cho phép bạn sắp xếp kết quả của truy vấn theo một cột nhất định. Đối số đầu tiên được phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
327 chấp nhận phải là cột mà bạn muốn sắp xếp theo đó, trong khi đối số thứ hai xác định hướng sắp xếp và có thể là DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
330 hoặc DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
331DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
51Để sắp xếp theo nhiều cột, bạn chỉ cần gọi
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
327 nhiều lần nếu cầnDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
51Phương pháp DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
333 & DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
334
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
Các phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
333 và DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
334 cho phép bạn dễ dàng sắp xếp kết quả theo ngày. Theo mặc định, kết quả sẽ được sắp xếp theo cột use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
62 của bảng. Hoặc, bạn có thể chuyển tên cột mà bạn muốn sắp xếp theoThứ tự ngẫu nhiên
Phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
338 có thể được sử dụng để sắp xếp kết quả truy vấn một cách ngẫu nhiên. Ví dụ: bạn có thể sử dụng phương pháp này để tìm nạp một người dùng ngẫu nhiênDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
70Xóa đơn đặt hàng hiện tại
Phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
339 loại bỏ tất cả các mệnh đề "order by" đã được áp dụng trước đó cho truy vấnDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
71Bạn có thể chuyển một cột và hướng khi gọi phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
339 để xóa tất cả mệnh đề "order by" hiện có và áp dụng một thứ tự hoàn toàn mới cho truy vấnDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
72nhóm
Phương pháp DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
341 & DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
342
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
Như bạn có thể mong đợi, các phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
341 và DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
342 có thể được sử dụng để nhóm các kết quả truy vấn. Chữ ký của phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
342 tương tự như chữ ký của phương thức use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
73Bạn có thể sử dụng phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
347 để lọc kết quả trong một phạm vi nhất địnhDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
74Bạn có thể truyền nhiều đối số cho phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
341 để nhóm theo nhiều cộtDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
75Để xây dựng các câu lệnh
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
342 nâng cao hơn, hãy xem phương pháp use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
41Giới hạn & Bù trừ
Phương pháp DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
351 & DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
352
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
Bạn có thể sử dụng các phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
351 và DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
352 để giới hạn số lượng kết quả trả về từ truy vấn hoặc bỏ qua một số kết quả nhất định trong truy vấnDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
76Ngoài ra, bạn có thể sử dụng phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
355 và DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
356. Các phương thức này có chức năng tương đương với các phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
352 và DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
351, tương ứngDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
51mệnh đề điều kiện
Đôi khi bạn có thể muốn một số mệnh đề truy vấn áp dụng cho một truy vấn dựa trên một điều kiện khác. Chẳng hạn, bạn có thể chỉ muốn áp dụng câu lệnh
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56 nếu có một giá trị đầu vào nhất định trong yêu cầu HTTP đến. Bạn có thể thực hiện việc này bằng cách sử dụng phương pháp DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
360DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
78Phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
360 chỉ thực thi bao đóng đã cho khi đối số đầu tiên là DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
362. Nếu đối số đầu tiên là use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
12, lệnh đóng sẽ không được thực thi. Vì vậy, trong ví dụ trên, bao đóng được cung cấp cho phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
360 sẽ chỉ được gọi nếu trường DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
365 xuất hiện trong yêu cầu đến và ước tính thành DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
362Bạn có thể chuyển một bao đóng khác làm đối số thứ ba cho phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
360. Việc đóng này sẽ chỉ thực hiện nếu đối số đầu tiên đánh giá là use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
12. Để minh họa cách sử dụng tính năng này, chúng tôi sẽ sử dụng tính năng này để định cấu hình thứ tự mặc định của truy vấnDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
79Chèn báo cáo
Trình tạo truy vấn cũng cung cấp một phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
369 có thể được sử dụng để chèn các bản ghi vào bảng cơ sở dữ liệu. Phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
369 chấp nhận một mảng tên và giá trị cộtDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
90Bạn có thể chèn nhiều bản ghi cùng một lúc bằng cách chuyển một mảng các mảng. Mỗi mảng đại diện cho một bản ghi sẽ được chèn vào bảng
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
90Phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
371 sẽ bỏ qua lỗi khi chèn bản ghi vào cơ sở dữ liệu. Khi sử dụng phương pháp này, bạn nên lưu ý rằng các lỗi bản ghi trùng lặp sẽ bị bỏ qua và các loại lỗi khác cũng có thể bị bỏ qua tùy thuộc vào công cụ cơ sở dữ liệu. Ví dụ: DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
371 sẽ bỏ qua chế độ nghiêm ngặt của MySQLDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
92Phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
373 sẽ chèn các bản ghi mới vào bảng trong khi sử dụng truy vấn con để xác định dữ liệu sẽ được chèn vàoDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
93ID tăng tự động
Nếu bảng có id tăng tự động, hãy sử dụng phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
374 để chèn bản ghi rồi truy xuất IDDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
94Cảnh báo
Khi sử dụng PostgreSQL, phương thức374 yêu cầu cột tăng tự động có tên là
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
04. Nếu bạn muốn truy xuất ID từ một "dãy" khác, bạn có thể chuyển tên cột làm tham số thứ hai cho phương thức
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
374.
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
Upserts
Phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
378 sẽ chèn các bản ghi không tồn tại và cập nhật các bản ghi đã tồn tại với các giá trị mới mà bạn có thể chỉ định. Đối số đầu tiên của phương thức bao gồm các giá trị để chèn hoặc cập nhật, trong khi đối số thứ hai liệt kê [các] cột xác định duy nhất các bản ghi trong bảng được liên kết. Đối số thứ ba và cũng là đối số cuối cùng của phương thức là một mảng các cột sẽ được cập nhật nếu một bản ghi phù hợp đã tồn tại trong cơ sở dữ liệuDB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
95Trong ví dụ trên, Laravel sẽ cố gắng chèn hai bản ghi. Nếu một bản ghi đã tồn tại với cùng giá trị cột
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
379 và DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
380, Laravel sẽ cập nhật cột DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
381 của bản ghi đóCảnh báo
Tất cả các cơ sở dữ liệu ngoại trừ SQL Server đều yêu cầu các cột trong đối số thứ hai của phương thức378 phải có chỉ mục "chính" hoặc "duy nhất". Ngoài ra, trình điều khiển cơ sở dữ liệu MySQL bỏ qua đối số thứ hai của phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
378 và luôn sử dụng các chỉ mục "chính" và "duy nhất" của bảng để phát hiện các bản ghi hiện có.
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
Cập nhật báo cáo
Ngoài việc chèn các bản ghi vào cơ sở dữ liệu, trình xây dựng truy vấn cũng có thể cập nhật các bản ghi hiện có bằng phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
384. Phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
384, giống như phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
369, chấp nhận một mảng các cặp cột và giá trị cho biết các cột sẽ được cập nhật. Phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
384 trả về số hàng bị ảnh hưởng. Bạn có thể hạn chế truy vấn DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
384 bằng mệnh đề use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
56DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
96Cập nhật hoặc Chèn
Đôi khi bạn có thể muốn cập nhật một bản ghi hiện có trong cơ sở dữ liệu hoặc tạo nó nếu không có bản ghi phù hợp nào tồn tại. Trong trường hợp này, phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
390 có thể được sử dụng. Phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
390 chấp nhận hai đối số. một mảng các điều kiện để tìm bản ghi và một mảng các cặp cột và giá trị cho biết các cột sẽ được cập nhậtPhương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
390 sẽ cố gắng định vị một bản ghi cơ sở dữ liệu phù hợp bằng cách sử dụng các cặp giá trị và cột của đối số đầu tiên. Nếu bản ghi tồn tại, nó sẽ được cập nhật với các giá trị trong đối số thứ hai. Nếu không tìm thấy bản ghi, một bản ghi mới sẽ được chèn với các thuộc tính đã hợp nhất của cả hai đối sốCập nhật cột JSON
Khi cập nhật cột JSON, bạn nên sử dụng cú pháp
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
90 để cập nhật khóa thích hợp trong đối tượng JSON. Thao tác này được hỗ trợ trên MySQL 5. 7+ và PostgreSQL 9. 5+DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
97Tăng giảm
Trình tạo truy vấn cũng cung cấp các phương thức thuận tiện để tăng hoặc giảm giá trị của một cột nhất định. Cả hai phương thức này đều chấp nhận ít nhất một đối số. cột để sửa đổi. Một đối số thứ hai có thể được cung cấp để xác định số tiền mà theo đó cột sẽ được tăng hoặc giảm
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
98Bạn cũng có thể chỉ định các cột bổ sung để cập nhật trong quá trình hoạt động
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
99Xóa câu lệnh
Phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
394 của trình tạo truy vấn có thể được sử dụng để xóa các bản ghi khỏi bảng. Phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
394 trả về số hàng bị ảnh hưởng. Bạn có thể hạn chế câu lệnh DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
394 bằng cách thêm mệnh đề "where" trước khi gọi phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
394DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
0Nếu bạn muốn cắt bớt toàn bộ bảng, thao tác này sẽ xóa tất cả các bản ghi khỏi bảng và đặt lại ID tăng tự động về 0, bạn có thể sử dụng phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
398DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
1Cắt bảng & PostgreSQL
Khi cắt bớt cơ sở dữ liệu PostgreSQL, hành vi
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
399 sẽ được áp dụng. Điều này có nghĩa là tất cả các bản ghi liên quan đến khóa ngoại trong các bảng khác cũng sẽ bị xóakhóa bi quan
Trình tạo truy vấn cũng bao gồm một số chức năng để giúp bạn đạt được "khóa bi quan" khi thực hiện các câu lệnh
use Illuminate\Support\Facades\DB;
$users = DB::table['users']->get[];
28 của mình. Để thực thi câu lệnh với "khóa chia sẻ", bạn có thể gọi phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
501. Khóa dùng chung ngăn các hàng đã chọn bị sửa đổi cho đến khi giao dịch của bạn được thực hiệnNgoài ra, bạn có thể sử dụng phương pháp
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
502. Khóa "để cập nhật" ngăn các bản ghi đã chọn bị sửa đổi hoặc được chọn bằng một khóa dùng chung khácgỡ lỗi
Bạn có thể sử dụng các phương thức
DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
503 và DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
504 trong khi tạo truy vấn để kết xuất các ràng buộc truy vấn hiện tại và SQL. Phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
503 sẽ hiển thị thông tin gỡ lỗi và sau đó dừng thực hiện yêu cầu. Phương thức DB::table['users']->where['active', false]
->chunkById[100, function [$users] {
->update[['active' => true]];
504 sẽ hiển thị thông tin gỡ lỗi nhưng cho phép yêu cầu tiếp tục thực hiện