Laravel Eloquent "DONDE NO ESTÁ EN"


143

Tengo problemas para escribir la consulta laravel eloquent ORM.

mi consulta es

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

Ahora quiero convertir esta consulta en laravel elocuente.

Respuestas:


312

Consultor de construcción:

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

Elocuente:

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

27
selectse puede reemplazar con una matriz en get.
Marwelln

66
¡SO es más rápido que buscar en la documentación oficial!
Fer García

Buena respuesta. Es muy útil para mí.
Yagnesh Bhalala

@ Marwelln, sí, pero no funcionará con consultas complejas. Por ejemplo, con el método addSelect.
Orange-Man

26

Puede usar WhereNotIn de la siguiente manera también:

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

Esto devolverá la colección de registros con campos específicos.


8

Tuve problemas para hacer una subconsulta hasta que agregué el método ->toArray()al resultado, espero que ayude a más de uno, ya que la pasé bien buscando la solución.

Ejemplo

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

4

La forma dinámica de implementar whereNotIn:

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

1
Tu ejemplo es demasiado complejo. User::orderBy('name', 'DESC')->where('status', '!=',0)->get()
Adsy2010


2

Puede usar WhereNotInde la siguiente manera:

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

2

Puede usar este ejemplo para llamar dinámicamente a Where NOT IN

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

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

0

Puedes hacer lo siguiente.

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

0

Simplemente significa que tiene una matriz de valores y desea registrar, excepto esos valores / registros.

simplemente puede pasar una matriz a whereNotIn () laravel function.

Con el generador de consultas

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

Con elocuente.

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

0

Esta es mi variante de trabajo para Laravel 7

DB::table('user')                 
  ->select('id','name')
  ->whereNotIn('id', DB::table('curses')->where('id_user', $id)->pluck('id_user')->toArray())
  ->get();
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.