Ответ 1
Просто используйте это:
$user = User::whereEmail($email)->first();
Это может быть простой вопрос, но я не могу понять это. Я пытаюсь получить пользователя по электронной почте, используя:
$user = User::whereEmail($email)->get();
Но это возвращает массив (размерности 1) из $users. Поэтому, если я хочу получить имя, я должен сделать $user[0]['first_name']
.
Я попытался использовать limit(1)
или take(1)
, или даже используя ->toArray()
, но не было никакой разницы.
Что я делаю неправильно?
Просто используйте это:
$user = User::whereEmail($email)->first();
Ты тоже можешь это сделать
Прежде чем использовать это, вы должны объявить фасад БД в контроллере. Просто поместите эту строку для этого
use Illuminate\Support\Facades\DB;
Теперь вы можете получить строку с помощью этого
$getUserByEmail = DB::table('users')->where('email', $email)->first();
или этим тоже
$getUserByEmail = DB::select('SELECT * FROM users WHERE email = ?' , ['[email protected]']);
Этот возвращает массив только с одним элементом, а первый возвращает объект. Запомни.
Надеюсь это поможет.
Используя Laravel Eloquent, вы можете получить одну строку, используя метод first()
,
он возвращает первую строку таблицы, если условие where()
не найдено, в противном случае он выдает первую соответствующую строку заданных критериев.
Синтаксис:
Model::where('fieldname',$value)->first();
Пример:
$user = User::where('email',$email)->first();
//OR
//$user = User::whereEmail($email)->first();
Ларавелла 5.8
Если вам даже не нужна вся строка, вы можете извлечь одно значение из записи, используя метод value()
. Этот метод возвращает значение столбца напрямую:
$first_name = DB::table('users')->where('email' ,'[email protected],com')->value('first_name');
проверить документы
Вы также можете использовать этот
$user = User::where('Email' , $email)->get();