Pode ser uma pergunta simples, mas não consigo entender. Estou tentando obter um usuário por e-mail usando:
$user = User::whereEmail($email)->get();
Mas isso está retornando um array (de dimensão 1) de $ users. Então, se eu quiser saber o nome, tenho que fazer $user[0]['first_name']
.
Tentei usar limit(1)
ou take(1)
, ou mesmo usar, ->toArray()
mas não houve diferença.
O que estou fazendo errado?
Respostas:
Basta usar isto:
fonte
Você também pode fazer isso
Antes de usar isso, você deve declarar a fachada do banco de dados no controlador. Basta colocar esta linha para isso
use Illuminate\Support\Facades\DB;
Agora você pode obter uma linha usando este
$getUserByEmail = DB::table('users')->where('email', $email)->first();
ou por isso também
$getUserByEmail = DB::select('SELECT * FROM users WHERE email = ?' , ['[email protected]']);
Este retorna um array com apenas um item e enquanto o primeiro retorna um objeto. Tenha isso em mente.
Espero que isto ajude.
fonte
Usando o Laravel Eloquent você pode obter uma linha usando o
first()
método,ele retorna a primeira linha da tabela se a
where()
condição não for encontrada, caso contrário, ele fornece a primeira linha correspondente de determinados critérios.Sintaxe:
Model::where('fieldname',$value)->first();
Exemplo:
$user = User::where('email',$email)->first(); //OR //$user = User::whereEmail($email)->first();
fonte
laravel 5.8
Se você nem precisa de uma linha inteira, pode extrair um único valor de um registro usando o
value()
método. Este método retornará o valor da coluna diretamente:$first_name = DB::table('users')->where('email' ,'me@mail,com')->value('first_name');
verificar documentos
fonte
Tente com isso
$color = \App\Color::take(1)->first();
fonte
Laravel 5.2
$sql = "SELECT * FROM users WHERE email = $email"; $user = collect(\User::select($sql))->first();
ou
$user = User::table('users')->where('email', $email)->pluck();
fonte
$user = User::whereEmail($email)->first();
o proposto na resposta aceita.Você também pode usar este
fonte