[laravel] Laravel Eloquent-한 줄 가져 오기

이것은 간단한 질문 일 수 있지만 나는 이것을 이해할 수 없습니다. 다음을 사용하여 이메일로 사용자를 얻으려고합니다.

$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();