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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.