Where - mayako/Spaguetti GitHub Wiki
La clase Query
nos proporsiona una gran cantidad de metodos para el filtrado de nuestros datos. A continuacion se enlistan todas las variaciones, aliases y sintaxis para crear condiciones WHERE
:
Condiciones directas
# SELECT * FROM users WHERE total = 100;
DB::table('users')->where('total = ?', [100]);
Igualaciones
# SELECT * FROM users WHERE id = 13 AND name = 'Jhon';
DB::table('users')->where(['id' => 13, 'name' => 'Jhon']);
# SELECT * FROM users WHERE id IN(1, 2, 3);
DB::table('users')->where(['id' => [1, 2, 3]]);
# SELECT * FROM users WHERE name IS NULL AND active = 1;
DB::table('users')->where(['name' => null, 'active' => true]);
Subqueries
# SELECT * FROM users WHERE id IN(SELECT id FROM admins);
DB::table('users')->where(['id' => DB::table('admins')->select('id')]);
Negaciones
# SELECT * FROM users WHERE NOT(total = 99);
DB::table('users')->where_not('total = ?', [99]);
# SELECT * FROM users WHERE total <> 99;
DB::table('users')->where_not(['total' => 99]);
AND y OR
Por default la funcion where
agrega el operador AND
, asi que la funcion and_where()
es un alias de la misma.
# SELECT * FROM users WHERE id = 1;
$query = DB::table('users')->where(['id' => 1]);
# AND total = 99
$query->and_where('total = ?', [99]);
# OR total = 99
$query->or_where(['total' => 99]);
Negacion OR
# SELECT * FROM users WHERE id = 1 OR NOT(total = 99);
$query = DB::table('users')->where(['id' => 1]);
$query->or_where_not('total = ?', [99]);
Aliases
LIKE
$query->where('name like ?', ["Jhon%"]);
# ó
$query->like('name', "Jhon%");
IN
$query->where('id in(?, ?, ?)', [1, 2, 3]);
# ó
$query->where(['id' => [1, 2, 3]]);
# ó
$query->in('id', 1, 2, 3);
# ó
$query->in('id', [1, 2, 3]);
BETWEEN
$query->where('date between ? and ?', ['2016/05/12', '2016/12/06']);
# ó
$query->between("date", '2016/05/12', '2016/12/06');
IS NULL
$query->where('id IS NULL');
# ó
$query->where(['id' => null]);
# ó
$query->is_null("id");
# ó negación
$query->is_not_null("id");
Fechas
$query->date('fecha', '2016-12-05');
# ó
$query->day('fecha', '1');
# ó
$query->month('fecha', '11');
# ó
$query->year('fecha', '2016');
Buscadores
Find
Busca registros por su ID, por estándar el nombre de la columna es id
, pero este comportamiento puede cambiar, pasando como segundo argumento el nombre de la primary key:
$query->find(1) // id = 1
# ó
$query->find([1, 2]) // id in(1,2)
# ó
$query->find(12, 'id_user') // id_user = 12
Find_by
Similar al método where
, a excepción que este método, solo devuelve el primer registro encontrado que cumpla con las condiciones:
$user = $query->find_by(['active' => true]);
echo $user->name;