laravel - plantillas - Elocuente: donde no es igual a
laravel tags (3)
Para
where field not empty
esto funcionó para mí:
->where(''table_name.field_name'', ''<>'', '''')
Actualmente estoy usando la última versión de Laravel.
He intentado las siguientes consultas:
Code::where(''to_be_used_by_user_id'', ''<>'' , 2)->get()
Code::whereNotIn(''to_be_used_by_user_id'', [2])->get()
Code::where(''to_be_used_by_user_id'', ''NOT IN'', 2)->get()
Idealmente, debería devolver todos los registros excepto
user_id = 2
, pero devuelve una matriz en blanco.
¿Cómo abordo esto?
Code::all()
Esto devuelve los 4 registros.
Modelo de código:
<?php namespace App;
use Illuminate/Database/Eloquent/Model;
class Code extends Model
{
protected $fillable = [''value'', ''registration_id'', ''generated_for_user_id'', ''to_be_used_by_user_id'', ''code_type_id'', ''is_used''];
public function code_type()
{
return $this->belongsTo(''App/CodeType'');
}
}
Si bien esto parece funcionar
Code::where(''to_be_used_by_user_id'', ''!='' , 2)->orWhereNull(''to_be_used_by_user_id'')->get();
no debe usarlo para tablas grandes, porque como regla general "o" en su cláusula where está deteniendo la consulta para usar index. Pasará de "Búsqueda de clave" a "exploración de tabla completa"
En cambio, prueba Union
$first = Code::whereNull(''to_be_used_by_user_id'');
$code = Code::where(''to_be_used_by_user_id'', ''!='' , 2)
->union($first)
->get();
Use
where
con a
!=
Operator en combinación con
whereNull
Code::where(''to_be_used_by_user_id'', ''!='' , 2)->orWhereNull(''to_be_used_by_user_id'')->get()