Vous êtes sur la page 1sur 4

Recuperar una sola fila / columna de una tabla

 Si solo necesita recuperar una sola fila de la tabla de la base de datos, puede usar el
primer método. Este método devolverá un solo objeto stdClass:

$user = DB::table('users')->where('name', 'John')->first();


echo $user->name;

 Si ni siquiera necesita una fila completa, puede extraer un solo valor de un registro
utilizando el método del valor. Este método devolverá el valor de la columna
directamente.

$email = DB::table('users')->where('name', 'John')->value('email');

Recuperar una lista de valores de columna


 Si desea recuperar una colección que contiene los valores de una sola columna, puede
usar el método de desplumar. En este ejemplo, recuperaremos una colección de
títulos de roles:

$titles = DB::table('roles')->pluck('title');

foreach ($titles as $title) {


echo $title;

 También puede especificar una columna de clave personalizada para la Colección

de vuelta:

$roles = DB::table('roles')->pluck('title', 'name');

foreach ($roles as $name => $title) {


echo $title;

Resultados de fragmentación

 Si necesita trabajar con miles de registros de la base de datos, considere usar

el método chunk. Este método recupera una pequeña parte de los resultados a

la vez y alimenta cada parte en un Cierre para su procesamiento. Este método

es muy útil para escribir comandos de Artisan que procesan miles de registros.

Por ejemplo, trabajemos con toda la tabla de usuarios en porciones de 100

registros a la vez:
DB::table('users')->orderBy('id')->chunk(100, function ($users) {
foreach ($users as $user) {
//
}
})

 Puede evitar que se procesen más trozos devolviendo falso desde el Cierre:

DB::table('users')->orderBy('id')->chunk(100, function ($users) {


// Process the records...

return false;
});

 Si está actualizando los registros de la base de datos mientras fragmenta los

resultados, sus resultados podrían cambiar de forma inesperada. Por lo tanto,

cuando se actualizan los registros mientras se fragmentan, siempre es mejor

usar el método chunkById. Este método paginará automáticamente los

resultados según la clave principal del registro

DB::table('users')->where('active', false)
->chunkById(100, function ($users) {
foreach ($users as $user) {
DB::table('users')
->where('id', $user->id)
->update(['active' => true]);
}
});

Agregados

 El generador de consultas también proporciona una variedad de métodos

agregados, como conteo, máximo, mínimo, promedio y suma. Puede llamar a

cualquiera de estos métodos después de construir su consulta.

$users = DB::table('users')->count();

$price = DB::table('orders')->max('price');

 Puedes combinar estos métodos con otras cláusulas:


$price = DB::table('orders')
->where('finalized', 1)
->avg('price');

Determinar si existen registros


 En lugar de usar el método de conteo para determinar si existe algún registro

que coincida con las restricciones de su consulta, puede usar los métodos

existentes y no existe

return DB::table('orders')->where('finalized', 1)->exists();

return DB::table('orders')->where('finalized', 1)->doesntExist();


Especificando una cláusula de selección
 Es posible que no siempre desee seleccionar todas las columnas de una tabla de base de datos.
Usando el método de selección, puede especificar una cláusula de selección personalizada para
la consulta:

$users = DB::table('users')->select('name', 'email as user_email')->get();


 El método distinto le permite forzar la consulta para devolver resultados distintos:
$users = DB::table('users')->distinct()->get();

 Si ya tiene una instancia de generador de consultas y desea agregar una

columna a su cláusula de selección existente, puede usar el método addSelect:

$query = DB::table('users')->select('name');

$users = $query->addSelect('age')->get();

Expresiones crudas

 A veces es posible que necesite usar una expresión en bruto en una consulta. Para crear una
expresión en bruto, puede usar el método DB :: raw

$users = DB::table('users')
->select(DB::raw('count(*) as user_count, status'))
->where('status', '<>', 1)
->groupBy('status')
->get();

Métodos en bruto
 En lugar de usar DB :: raw, también puede usar los siguientes métodos para
insertar una expresión en bruto en varias partes de su consulta.
seleccionarRaw
 El método selectRaw se puede usar en lugar de select (DB :: raw (...)). Este
método acepta una matriz opcional de enlaces como su segundo argumento

$orders = DB::table('orders')
->selectRaw('price * ? as price_with_tax', [1.0825])
->get();
whereRaw / orWhereRaw
 Los métodos whereRaw y orWhereRaw se pueden usar para inyectar una
cláusula where sin procesar en su consulta. Estos métodos aceptan una matriz
opcional de enlaces como su segundo argumento:

$orders = DB::table('orders')
->whereRaw('price > IF(state = "TX", ?, 100)', [200])
->get();
teniendoRaw / orHavingRaw
 Los métodos havingRaw y orHavingRaw se pueden usar para establecer una cadena en
bruto como el valor de la cláusula having. Estos métodos aceptan una matriz opcional
de enlaces como su segundo argumento

Vous aimerez peut-être aussi