Laravel Eloquent ĐẠO Ở ĐÂU


143

Tôi gặp khó khăn để viết truy vấn laravel eloquent ORM.

truy vấn của tôi là

SELECT book_name,dt_of_pub,pub_lang,no_page,book_price  
FROM book_mast        
WHERE book_price NOT IN (100,200);

Bây giờ tôi muốn chuyển đổi truy vấn này thành tài hùng biện.

Câu trả lời:


312

Trình tạo truy vấn:

DB::table(..)->select(..)->whereNotIn('book_price', [100,200])->get();

Hiệu quả:

SomeModel::select(..)->whereNotIn('book_price', [100,200])->get();

27
selectcó thể được thay thế bằng một mảng trong get.
Marwelln

6
SO nhanh hơn tìm kiếm trong tài liệu chính thức!
Fer García

trả lời tốt đẹp. nó rất hữu ích cho tôi
Yagnesh bhalala

@Marwelln, vâng, nhưng nó sẽ không hoạt động với các truy vấn phức tạp. Ví dụ với phương thức addSelect.
Orange-Man

26

Bạn cũng có thể sử dụng WhereNotIn theo cách sau:

ModelName::whereNotIn('book_price', [100,200])->get(['field_name1','field_name2']);

Điều này sẽ trả về bộ sưu tập Bản ghi với các trường cụ thể


7

Tôi gặp vấn đề khi thực hiện một truy vấn phụ cho đến khi tôi thêm phương thức ->toArray()vào kết quả, tôi hy vọng nó sẽ giúp nhiều hơn một vì tôi đã có thời gian tìm kiếm giải pháp.

Thí dụ

DB::table('user')                 
  ->select('id','name')
  ->whereNotIn('id', DB::table('curses')->select('id_user')->where('id_user', '=', $id)->get()->toArray())
  ->get();

4

Cách năng động để thực hiện whereNotIn:

 $users = User::where('status',0)->get();
    foreach ($users as $user) {
                $data[] = $user->id;
            }
    $available = User::orderBy('name', 'DEC')->whereNotIn('id', $data)->get();

1
Ví dụ của bạn là quá phức tạp. User::orderBy('name', 'DESC')->where('status', '!=',0)->get()
Adsy2010


2

Bạn có thể sử dụng WhereNotIntheo cách sau:

$category=DB::table('category')
          ->whereNotIn('category_id',[14 ,15])
          ->get();`enter code here`

2

Bạn có thể sử dụng ví dụ này để gọi động ở nơi KHÔNG VÀO

$ user = Người dùng :: trong đó ('company_id', '=', 1) -> select ('id) -> get () -> toArray ();

$ otherCompany = Người dùng :: whereNotIn ('id', $ user) -> get ();

0

Bạn có thể làm như sau.

DB::table('book_mast') 
->selectRaw('book_name,dt_of_pub,pub_lang,no_page,book_price')  
->whereNotIn('book_price',[100,200]);

0

Nó đơn giản có nghĩa là bạn có một mảng các giá trị và bạn muốn ghi lại ngoại trừ các giá trị / bản ghi đó.

bạn có thể chỉ cần truyền một mảng vào hàm laravel whereNotIn ().

Với trình tạo truy vấn

$users = DB::table('applications')
                    ->whereNotIn('id', [1,3,5]) 
                    ->get(); //will return without applications which contain this id's

Với tài hùng biện.

$result = ModelClassName::select('your_column_name')->whereNotIn('your_column_name', ['satatus1', 'satatus2']); //return without application which contain this status.

0

Đây là biến thể làm việc của tôi cho Laravel 7

DB::table('user')                 
  ->select('id','name')
  ->whereNotIn('id', DB::table('curses')->where('id_user', $id)->pluck('id_user')->toArray())
  ->get();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.