Laravel Eloquent“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 웅변으로 변환하고 싶습니다.

답변:


312

쿼리 작성기 :

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

웅변 :

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

27
select의 배열로 대체 할 수 있습니다 get.
Marwelln

6
공식 문서에서 검색하는 것보다 SO가 빠릅니다!
Fer García

좋은 답변. 매우 도움이되었습니다.
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


2

WhereNotIn다음과 같은 방법으로 사용할 수 있습니다 .

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

2

이 예제를 사용하여 Where NOT IN 을 동적으로 호출 할 수 있습니다

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

$ otherCompany = 사용자 :: 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 () 라 라벨 함수에 배열을 전달할 수 있습니다.

쿼리 작성기

$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.

0

이것은 Laravel 7의 변형입니다.

DB::table('user')                 
  ->select('id','name')
  ->whereNotIn('id', DB::table('curses')->where('id_user', $id)->pluck('id_user')->toArray())
  ->get();
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.