WhereIn and WhereIntegerInRaw method in Laravel

Khi bạn sử dụng mệnh đề WhereIn trong Laravel Eloquent, bạn có thể sẽ đạt đến số lượng tham số tối đa mà công cụ cơ sở dữ liệu của bạn hỗ trợ. Tùy thuộc vào công cụ cơ sở dữ liệu bạn sử dụng, số lượng tham số tối đa mà nó hỗ trợ có thể thấp tới 2100 (Microsoft SQL Server)

 

 $users_1 = App\Models\User::whereIn('id',[1,2,3])->get();
    //SELECT * FROM users WHERE id IN (1, 2, 3);
    dd($users_1->toArray());


    $users_2= App\Models\User::whereIntegerInRaw('id',[1,2,3])->get();
    // SELECT * FROM users WHERE id IN (1, 2, 3);
    dd($users_2->toArray());

Khi sử dụng WhereIn, thì SQL nó cần giữ chổ cho các vị trí như(?,?,?) trong câu truy vấn 
SELECT * FROM users WHERE id in (?, ?, ?)
Còn nếu bạn dùng whereIntegerInRaw(). Thì nó sẽ không cần phải đặt chổ trước. 
SELECT * FROM users WHERE id in (1, 2, 3), các số trong mảng nó sẽ điền vào trong câu lệnh luôn

Về hiệu suất xử lý thì whereIntegerInRaw sẽ nhanh hơn whereIn

Với một số vấn đề sau, thường bạn truy vấn whereIn với số lượng lớn id
ví dụ: User::whereIn('id', range(0, 9999))->get(); nó sẽ rất lâu với truy vấn số lượng lớn
Trong khi whereIntegerInRaw nó sẽ giúp bạn giải quyết vấn đề trên, chú ý mảng của nó phải là số nguyên

Bài Viết Liên Quan

Messsage

Nếu bạn thích chia sẻ của tôi, đừng quên nhấn nút !ĐĂNG KÝ