Laravel không IN truy vấn phụ

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 2022

    Trì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');

    0

    DB::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)

    0

    Sử dụng ở đâu giữa

    DB::table('users')->chunk(100, function($users)

    1

    Sử dụng Where Not Between

    DB::table('users')->chunk(100, function($users)

    2

    Sử dụng Where In với một mảng

    DB::table('users')->chunk(100, function($users)

    3

    Sử dụng Where Null để tìm bản ghi với giá trị chưa đặt

    DB::table('users')->chunk(100, function($users)

    4

    Mệ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)

    5

    Sắp xếp theo, theo nhóm và có

    DB::table('users')->chunk(100, function($users)

    6

    Bù trừ & Giới hạn

    DB::table('users')->chunk(100, function($users)

    7

    tham 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)

    8

    Tuyên bố tham gia trái

    DB::table('users')->chunk(100, function($users)

    9

    Bạ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)

    0

    Nế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)

    1

    Nâ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)

    2

    Truy vấn trên sẽ tạo ra SQL sau

    DB::table('users')->chunk(100, function($users)

    3

    Tồn tại báo cáo

    DB::table('users')->chunk(100, function($users)

    4

    Truy vấn trên sẽ tạo ra SQL sau

    DB::table('users')->chunk(100, function($users)

    5

    uẩ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');

    7

    Sử dụng các phương pháp tổng hợp

    DB::table('users')->chunk(100, function($users)

    6

    biể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');

    8

    Sử dụng biểu thức thô

    DB::table('users')->chunk(100, function($users)

    7

    phụ trang

    Chèn bản ghi vào bảng

    DB::table('users')->chunk(100, function($users)

    8

    Chè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 id

    DB::table('users')->chunk(100, function($users)

    9

    Ghi 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();

    0

    cậ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();

    1

    Bạ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();

    2

    xóa

    Xóa các bản ghi trong một bảng

    $user = DB::table('users')->where('name', 'John')->first();

    3

    Xóa tất cả các bản ghi khỏi một bảng

    $user = DB::table('users')->where('name', 'John')->first();

    4

    Cắ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();

    6

    Phươ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');

    1

    khó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