Laravel雄辩的“ WHERE NOT IN”


143

我无法在中编写查询laravel eloquent ORM

我的查询是

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

现在,我想将此查询转换为雄辩的laravel。

Answers:


312

查询生成器:

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

雄辩:

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

27
select可以用中的数组替换get
Marwelln 2014年

6
这样比在官方文档中搜索要快!
加西亚

很好回答。这对我很有帮助。
Yagnesh bhalala

@Marwelln,是的,但是它不适用于复杂的查询。例如,使用addSelect方法。
Orange-Man

26

您还可以通过以下方式使用WhereNotIn

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

这将返回具有特定字段的记录的集合


7

在将子方法添加->toArray()到结果中之前,我在进行子查询时遇到了问题,我希望它能对很多人有所帮助,因为我有很多时间在寻找解决方案。

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

4

实现whereNotIn的动态方式:

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

1
您的示例过于复杂。User::orderBy('name', 'DESC')->where('status', '!=',0)->get()
adsy2010 '18



2

您可以使用此示例动态调用Where NOT IN

$ user = User :: where('company_id','=',1)-> select('id)-> get()-> toArray();

$ otherCompany = User :: whereNotIn('id',$ user)-> get();

0

您可以执行以下操作。

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

0

它只是意味着您有一个值数组,并且想要记录,但值/记录除外。

您可以简单地将数组传递到whereNotIn()laravel函数中。

使用查询生成器

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

雄辩。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.