digamos que tenho 7 colunas na tabela e quero selecionar apenas duas delas, algo como isto
SELECT `name`,`surname` FROM `table` WHERE `id` = '1';
No modelo laravel eloquente, pode parecer com isso
Table::where('id', 1)->get();
mas acho que essa expressão selecionará TODAS as colunas onde id é igual a 1 e quero apenas duas colunas (nome, sobrenome). como selecionar apenas duas colunas?
Respostas:
Você pode fazer assim:
fonte
SELECT name, surname FROM Table where id = 1
consulta SQLfonte
Usando o método all (), podemos selecionar colunas específicas da tabela como mostrado abaixo.
Nota : Laravel 5.4
fonte
Você também pode usar
find()
assim:A
$id
variável pode ser uma matriz, caso você precise recuperar várias instâncias do modelo.fonte
Além disso,
Model::all(['id'])->toArray()
ele apenas buscará o ID como array.fonte
Você primeiro precisa criar um Modelo, que represente essa Tabela e, em seguida, use a maneira Eloquent abaixo para buscar os dados de apenas 2 campos.
fonte
Você pode usar get () e all ()
fonte
Também você pode usar arrancar.
fonte
pluck()
é menos eficiente do que os outros métodos discutidos porque não modifica aSELECT ...
consulta, mas opera no conjunto de resultados já retornado.Obtenha o valor de uma coluna:
Mesmo você pode usar este método com a cláusula where:
no construtor de consultas:
com where cluase:
ou
último resultado do método é array
fonte
Você pode usar
Table::select ('name', 'surname')->where ('id', 1)->get ()
.Lembre-se de que, ao selecionar apenas determinados campos, você precisará fazer outra consulta se acabar acessando esses outros campos posteriormente na solicitação (isso pode ser óbvio, só queria incluir essa ressalva). Incluir o campo id geralmente é uma boa idéia, para que o laravel saiba como escrever de volta as atualizações que você fizer na instância do modelo.
fonte
No laravel 5.3, apenas usando o
get()
método, você pode obter colunas específicas da sua tabela:Ou no laravel 5.4, você também pode usar o
all()
método para obter os campos de sua escolha:com o método acima
get()
ouall()
você também pode usar,where()
mas a sintaxe é diferente para ambos:Model :: all ()
Model :: get ()
fonte
Para obter o resultado de uma coluna específica da tabela, precisamos especificar o nome da coluna.
Use o seguinte código: -
por exemplo -
fonte
Embora a abordagem mais comum seja o uso
Model::select
, ela pode causar a renderização de todos os atributos definidos com métodos de acessador nas classes de modelo. Portanto, se você definir o atributo no seu modelo:E então use:
TableName::select('username')->where('id', 1)->get();
Ele produzirá coleção com ambos
first_name
eusername
, em vez de apenas com o nome de usuário.Melhor uso
pluck()
, solo ou opcionalmente em combinação comselect
- se você quiser colunas específicas.TableName::select('username')->where('id', 1)->pluck('username');
ou
TableName::where('id', 1)->pluck('username');
// que retornaria uma coleção composta apenas porusername
valoresAlém disso, opcionalmente, use
->toArray()
para converter o objeto de coleção em matriz.fonte
->get()
bem como->all()
(e->first()
etc.) pode usar os campos que você deseja trazer de volta como parâmetros;->get/all(['column1','column2'])
Traria de volta a coleção, mas apenas com
column1
ecolumn2
fonte
você também pode usar o
findOrFail()
método aqui é bom usarfonte
Se você deseja obter uma única linha e a partir dessa coluna, um código de linha para obter o valor da coluna específica é usar o
find()
método ao lado da especificação da coluna que você deseja recuperá-la.Aqui está o código de exemplo:
fonte
Você pode usar a consulta abaixo:
fonte
use App \ Table; ... Table :: where ('id', 1) -> get ('nome', 'sobrenome');
se não onde
Tabela :: all ('nome', 'sobrenome');
fonte