plantillas - Cómo seleccionar columnas específicas en laravel elocuente
laravel foreach index (17)
Digamos que tengo 7 columnas en la tabla, y quiero seleccionar solo dos de ellas, algo como esto
SELECT `name`,`surname` FROM `table` WHERE `id` = ''1'';
En el modelo elocuente laravel puede verse así
Table::where(''id'', 1)->get();
pero supongo que esta expresión seleccionará TODAS las columnas donde id es igual a 1, y solo quiero dos columnas (nombre, apellido). ¿Cómo seleccionar solo dos columnas?
Al usar el método all () podemos seleccionar columnas particulares de la tabla como se muestra a continuación.
ModelName::all(''column1'', ''column2'', ''column3'');
Nota : Laravel 5.4
Desde laravel 5.3 solo usando el método
get()
puede obtener columnas específicas de su tabla:
ModelName::findOrFail($id, [''firstName'', ''lastName'']);
O desde laravel 5.4 también puede usar el método
all()
para obtener los campos de su elección:
ModelName::find($id_of_the_record, [''column_name''])->toArray()[''column_name''];
con los dos métodos anteriores
get()
o
all()
también puede usar
where()
pero la sintaxis es diferente para ambos:
Modelo :: todos ()
YouModelName::get([''id'', ''name'']);
Modelo :: get ()
YourModelName::all(''id'', ''name'');
Obtener el valor de una columna:
Table_Name::find($id)->column_name;
Incluso puedes usar este método con la cláusula where:
Table_Name::where(''id'',$id)->first()->column_name;
Primero debe crear un Modelo, que represente esa Tabla y luego usar la siguiente manera Elocuente para obtener los datos de solo 2 campos.
Model::where(''id'', 1)
->pluck(''name'', ''surname'')
->all();
Puede usar
Table::select (''name'', ''surname'')->where (''id'', 1)->get ()
.
Tenga en cuenta que al seleccionar solo ciertos campos, tendrá que hacer otra consulta si termina accediendo a esos otros campos más adelante en la solicitud (eso puede ser obvio, solo quería incluir esa advertencia). Incluir el campo id suele ser una buena idea para que laravel sepa cómo escribir las actualizaciones que realice en la instancia del modelo.
Puede usar get () y all ()
ModelName::where(''a'', 1)->get([''column1'',''column2'']);
Puede usar la siguiente consulta:
YourModelName::all(''id'', ''name'')->where(''id'',1);
Puedes hacerlo así:
Table::select(''name'',''surname'')->where(''id'', 1)->get();
Si bien el enfoque más común es usar
Model::select
, puede causar la representación de todos los atributos definidos con métodos de acceso dentro de las clases de modelo.
Entonces, si define un atributo en su modelo:
<?php
namespace App;
use Illuminate/Database/Eloquent/Model;
class User extends Model
{
/**
* Get the user''s first name.
*
* @param string $value
* @return string
*/
public function getFirstNameAttribute($value)
{
return ucfirst($value);
}
}
Y luego use:
TableName::select(''username'')->where(''id'', 1)->get();
Producirá una colección con
first_name
y
username
, en lugar de solo nombre de usuario.
Mejor use
pluck()
, solo u opcionalmente en combinación con
select
, si desea columnas específicas.
TableName::select(''username'')->where(''id'', 1)->pluck(''username'');
o
TableName::where(''id'', 1)->pluck(''username'');
// eso devolvería la colección que consta solo de valores de
username
de
username
Además, opcionalmente, use
->toArray()
para convertir el objeto de colección en una matriz.
Si desea obtener una sola fila y de esa fila una sola columna, un código de línea para obtener el valor de la columna específica es utilizar el método
find()
junto con la especificación de la columna que desea recuperar.
Aquí está el código de muestra:
Table(''table'')->select(''name'',''surname'')->where(''id'',1)->get();
También
Model::all([''id''])->toArray()
solo buscará id como matriz.
También puedes usar
find()
así:
ModelName::find($id, [''name'', ''surname'']);
La variable
$id
puede ser una matriz en caso de que necesite recuperar varias instancias del modelo.
También puedes usar pluck.
Model::where(''id'',1)->pluck(''column1'', ''column2'');
Use el siguiente código: -
$result = DB::Table(''table_name'')->select(''column1'',''column2'')->where(''id'',1)->get();
también puedes usar el método
findOrFail()
aquí
es bueno usar
Si no se detecta la excepción, se envía automáticamente una respuesta HTTP 404 al usuario. No es necesario escribir comprobaciones explícitas para devolver respuestas 404 cuando el uso de este método no da un error 500.
YourModelName::where(''id'',1)->get([''id'', ''name'']);
->get()
al igual que
->all()
(y
->first()
etc.) puede tomar los campos que desea traer de vuelta como parámetros;
->get/all([''column1'',''column2''])
column1
vuelta la colección pero solo con
column1
y
column2
Table::where(''id'', 1)->get([''name'',''surname'']);