Trong hướng dẫn này, bạn sẽ tìm hiểu về Laravel whereIn, whereNotIn With SubQuery Example và ứng dụng của nó với ví dụ thực tế
Trong bài viết ví dụ về truy vấn con whereIn và whereIn và whereNotIn với Laravel này, tôi sẽ chỉ cho bạn cách sử dụng truy vấn con whereIn và whereNotIn trong truy vấn laravel
Mục lục−
Truy vấn con của Laravel
Trong laravel, đôi khi bạn có thể muốn tìm nạp các bản ghi từ nhiều bảng cơ sở dữ liệu có mối quan hệ phức tạp và lồng nhau. Bạn cũng có thể yêu cầu loại trừ một số dữ liệu lồng nhau khỏi bảng DB. Vì vậy, điều này có thể đạt được bằng cách sử dụng mệnh đề whereIn và WhereNotIn trong truy vấn con
Laravel WhereIn SubQuery
Trong truy vấn ví dụ đã cho, chúng tôi sẽ tìm nạp dữ liệu từ bảng người dùng, có sẵn trong bảng user_role bằng cách sử dụng truy vấn con whereIn
WhereIn SubQuery Sử dụng Trình tạo truy vấn
1
2
3
DB. bảng('người dùng')->whereIn('id', function($query) {
$truy vấn->chọn('user_id')->from('role_user');
})->nhận();
WhereIn SubQuery Sử dụng Mô hình
1
2
3
Người dùng. whereIn('id', function($query) {
$truy vấn->chọn('user_id')->from('role_user');
})->nhận();
Câu lệnh laravel ở trên được đưa ra whereIn subQueries đại diện cho truy vấn SQL sau
1
2
3
CHỌN * TỪ `người dùng` WHERE `id` IN (
CHỌN `user_id` FROM `role_user`
)
Laravel WhereNotIn SubQuery
Trong truy vấn ví dụ đã cho, tìm nạp dữ liệu từ bảng người dùng, không có sẵn trong bảng user_role bằng cách sử dụng truy vấn con whereNotIn
🔥 Mẹo #Laravel. Phương thức 'whereExists' của Eloquent rất hữu ích, nhưng nó phụ thuộc vào các truy vấn phụ. Một cách hiệu quả hơn để chạy cùng một truy vấn là liên kết bên trong nâng cao. ảnh. Twitter. com/9GUf6tOecD
– Matt Kingshott (@mattkingshott) ngày 29 tháng 8 năm 2022Trình tạo truy vấn cơ sở dữ liệu cung cấp giao diện thuận tiện, thông thạo để 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 trên tất cả các hệ thống cơ sở dữ liệu được hỗ trợ
Ghi chú. Trình tạo truy vấn của Laravel sử dụng liên kết tham số PDO xuyên suốt để 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 xóa các chuỗi được truyền dưới dạng ràng buộc
chọn
Lấy tất cả các hàng từ một bảng
$users = DB::table('users')->get();
Chunking kết quả từ một bảng
DB::table('users')->chunk(100, function($users)
Bạn có thể ngừng xử lý các khối tiếp theo bằng cách trả lại
$user = DB::table('users')->where('name', 'John')->first();
9 từ$name = DB::table('users')->where('name', 'John')->pluck('name');
0DB::table('users')->chunk(100, function($users)
Truy xuất một hàng từ một bảng
$user = DB::table('users')->where('name', 'John')->first();
Truy xuất một cột từ một hàng
$name = DB::table('users')->where('name', 'John')->pluck('name');
Truy xuất danh sách các giá trị cột
$roles = DB::table('roles')->lists('title');
Phương thức này sẽ trả về một mảng các chức danh vai trò. Bạn cũng có thể chỉ định cột khóa tùy chỉnh cho mảng được trả về
________số 8_______Chỉ định một mệnh đề chọn
$users = DB::table('users')->select('name', 'email')->get();
$users = DB::table('users')->distinct()->get();
$users = DB::table('users')->select('name as user_name')->get();
Thêm một mệnh đề chọn vào một truy vấn hiện có
$query = DB::table('users')->select('name');
$users = $query->addSelect('age')->get();
Sử dụng toán tử Where
$users = DB::table('users')->where('votes', '>', 100)->get();
Hoặc Tuyên bố
DB::table('users')->chunk(100, function($users)
0Sử dụng ở đâu giữa
DB::table('users')->chunk(100, function($users)
1Sử dụng Where Not Between
DB::table('users')->chunk(100, function($users)
2Sử dụng Where In với một mảng
DB::table('users')->chunk(100, function($users)
3Sử dụng Where Null để tìm bản ghi với giá trị chưa đặt
DB::table('users')->chunk(100, function($users)
4Mệnh đề động Where
Bạn thậm chí có thể sử dụng các câu lệnh where "động" để xây dựng trôi chảy các câu lệnh where bằng các phương thức ma thuật
DB::table('users')->chunk(100, function($users)
5Sắp xếp theo, theo nhóm và có
DB::table('users')->chunk(100, function($users)
6Bù trừ & Giới hạn
DB::table('users')->chunk(100, function($users)
7tham gia
Trình tạo truy vấn cũng có thể được sử dụng để viết các câu lệnh nối. Hãy xem các ví dụ sau
Tuyên bố tham gia cơ bản
DB::table('users')->chunk(100, function($users)
8Tuyên bố tham gia trái
DB::table('users')->chunk(100, function($users)
9Bạn cũng có thể chỉ định các mệnh đề nối nâng cao hơn
DB::table('users')->chunk(100, function($users)
0Nếu bạn muốn sử dụng mệnh đề kiểu "where" trong phép nối của mình, bạn có thể sử dụng các phương thức
$name = DB::table('users')->where('name', 'John')->pluck('name');
1 và$name = DB::table('users')->where('name', 'John')->pluck('name');
2 trên phép nối. 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')->chunk(100, function($users)
1Nâng cao
Nhóm tham số
Đôi khi, bạn có thể cần tạo các mệnh đề where nâng cao hơn, chẳng hạn như "nơi tồn tại" hoặc các nhóm tham số lồng nhau. Trình tạo truy vấn của Laravel cũng có thể xử lý những điều này
DB::table('users')->chunk(100, function($users)
2Truy vấn trên sẽ tạo ra SQL sau
DB::table('users')->chunk(100, function($users)
3Tồn tại báo cáo
DB::table('users')->chunk(100, function($users)
4Truy vấn trên sẽ tạo ra SQL sau
DB::table('users')->chunk(100, function($users)
5uẩn
Trình tạo truy vấn cũng cung cấp nhiều phương pháp tổng hợp, chẳng hạn như
$name = DB::table('users')->where('name', 'John')->pluck('name');
3,$name = DB::table('users')->where('name', 'John')->pluck('name');
4,$name = DB::table('users')->where('name', 'John')->pluck('name');
5,$name = DB::table('users')->where('name', 'John')->pluck('name');
6 và$name = DB::table('users')->where('name', 'John')->pluck('name');
7Sử dụng các phương pháp tổng hợp
DB::table('users')->chunk(100, function($users)
6biểu thức thô
Đôi khi bạn có thể cần sử dụng biểu thức thô trong truy vấn. Các biểu thức này sẽ được đưa vào truy vấn dưới dạng chuỗi, vì vậy hãy cẩn thận để không tạo bất kỳ điểm chèn SQL nào. Để tạo một biểu thức thô, bạn có thể sử dụng phương thức
$name = DB::table('users')->where('name', 'John')->pluck('name');
8Sử dụng biểu thức thô
DB::table('users')->chunk(100, function($users)
7phụ trang
Chèn bản ghi vào bảng
DB::table('users')->chunk(100, function($users)
8Chèn bản ghi vào bảng có ID tăng tự động
Nếu bảng có id tăng tự động, hãy sử dụng
$name = DB::table('users')->where('name', 'John')->pluck('name');
9 để chèn bản ghi và truy xuất idDB::table('users')->chunk(100, function($users)
9Ghi chú. Khi sử dụng PostgreSQL, phương thức insertGetId mong đợi cột tăng tự động được đặt tên là "id"
Chèn nhiều bản ghi vào một bảng
$user = DB::table('users')->where('name', 'John')->first();
0cập nhật
Cập nhật các bản ghi trong một bảng
Tăng hoặc giảm giá trị của một cột
$user = DB::table('users')->where('name', 'John')->first();
1Bạn cũng có thể chỉ định các cột bổ sung để cập nhật
$user = DB::table('users')->where('name', 'John')->first();
2xóa
Xóa các bản ghi trong một bảng
$user = DB::table('users')->where('name', 'John')->first();
3Xóa tất cả các bản ghi khỏi một bảng
$user = DB::table('users')->where('name', 'John')->first();
4Cắt bớt một bảng
$user = DB::table('users')->where('name', 'John')->first();
5đoàn thể
Trình tạo truy vấn cũng cung cấp một cách nhanh chóng để "kết hợp" hai truy vấn với nhau
$user = DB::table('users')->where('name', 'John')->first();
6Phương thức
$roles = DB::table('roles')->lists('title');
0 cũng có sẵn và có cùng chữ ký phương thức như$roles = DB::table('roles')->lists('title');
1khóa bi quan
Trình tạo truy vấn bao gồm một vài hàm để giúp bạn thực hiện "khóa bi quan" trên các câu lệnh CHỌN của mình