이것은 간단한 질문 일 수 있지만 나는 이것을 이해할 수 없습니다. 다음을 사용하여 이메일로 사용자를 얻으려고합니다.
$user = User::whereEmail($email)->get();
그러나 이것은 $ users의 배열 (차원 1)을 반환합니다. 그래서 이름을 알고 싶다면 $user[0]['first_name']
.
나는 limit(1)
또는을 사용 하거나 take(1)
사용해 ->toArray()
보았지만 차이가 없었습니다.
내가 도대체 뭘 잘못하고있는 겁니까?
답변
다음을 사용하십시오.
$user = User::whereEmail($email)->first();
답변
너도 할 수있어
이것을 사용하기 전에 컨트롤러에서 DB 파사드를 선언해야합니다.
use Illuminate\Support\Facades\DB;
이제 이것을 사용하여 행을 얻을 수 있습니다.
$getUserByEmail = DB::table('users')->where('email', $email)->first();
또는 이것으로도
$getUserByEmail = DB::select('SELECT * FROM users WHERE email = ?' , ['useremailaddress@email.com']);
이것은 하나의 항목 만있는 배열을 반환하고 첫 번째 항목은 객체를 반환합니다. 명심하십시오.
도움이 되었기를 바랍니다.
답변
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' ,'me@mail,com')->value('first_name');
문서 확인
답변
그것으로 시도
$color = \App\Color::take(1)->first();
답변
라 라벨 5.2
$sql = "SELECT * FROM users WHERE email = $email";
$user = collect(\User::select($sql))->first();
또는
$user = User::table('users')->where('email', $email)->pluck();
답변
이것을 사용할 수도 있습니다
$user = User::whereEmail($email)->first();