Laravel Eloquent - Bir Satır Al


91

Bu basit bir soru olabilir ama bunu çözemiyorum. E-posta yoluyla bir kullanıcı almaya çalışıyorum:

$user = User::whereEmail($email)->get();

Ancak bu, $ kullanıcılı bir dizi (boyut 1) döndürüyor. Yani adı almak istiyorsam, yapmalıyım $user[0]['first_name'].

limit(1)Veya kullanmayı denedim take(1), hatta kullanmayı denedim ->toArray()ama hiçbir fark yoktu.

Neyi yanlış yapıyorum?


1
Sorgulanan sonuçtan bir satır mı almak istiyorsunuz? Yoksa veritabanı sorgusundan sadece bir satır mı istiyorsunuz?

Yanıtlar:



22

Bunu sen de yapabilirsin

Bunu kullanmadan önce, denetleyicide DB cephesini bildirmelisiniz Bunun için bu satırı basitçe koyun

use Illuminate\Support\Facades\DB;

Şimdi bunu kullanarak bir satır alabilirsiniz

$getUserByEmail = DB::table('users')->where('email', $email)->first();

ya da bununla da

$getUserByEmail = DB::select('SELECT * FROM users WHERE email = ?' , ['useremailaddress@email.com']);

Bu, içinde yalnızca bir öğe olan bir dizi döndürür ve ilki bir nesne döndürürken. Bunu aklınızda tutun.

Bu yardımcı olur umarım.


7

Laravel Eloquent'i kullanarak first()yöntemi kullanarak bir satır elde edebilirsiniz ,

where()koşul bulunmazsa tablonun ilk satırını döndürür , aksi takdirde verilen kriterin ilk eşleşen satırını verir.

Sözdizimi:

Model::where('fieldname',$value)->first();

Misal:

$user = User::where('email',$email)->first(); 
//OR
//$user = User::whereEmail($email)->first();

0

laravel 5.8

Tüm bir satıra bile ihtiyacınız yoksa, value()yöntemi kullanarak bir kayıttan tek bir değer çıkarabilirsiniz . Bu yöntem doğrudan sütunun değerini döndürür:

$first_name = DB::table('users')->where('email' ,'me@mail,com')->value('first_name');

belgeleri kontrol et



-4

Laravel 5.2

$sql = "SELECT * FROM users WHERE email = $email";

$user = collect(\User::select($sql))->first();

veya

$user = User::table('users')->where('email', $email)->pluck();

Bu, veritabanınızdaki tüm kullanıcıları web uygulaması sunucusunun belleğine yükleyecek ve sunucunuzun RAM'inde depolayabileceğinizden daha fazla kullanıcı verisine sahipseniz muhtemelen çökmesine neden olacaktır. Sadece bir kullanıcıya ihtiyacınız var, bu yüzden hepsinde hafızayı boşa harcamanıza gerek yok. Veritabanına, size ilk kullanıcıyı yalnızca $user = User::whereEmail($email)->first();kabul edilen yanıtta önerildiği şekilde göndermesini söyleyin .
Mladen Danic

-14

Bunu da kullanabilirsiniz

$user = User::whereEmail($email)->first();

2
Bu, bir öğe değil, bir koleksiyon döndürür.
Danon

verileri döndürür, etkilenen verilerin tamamı değil, yalnızca bir satır \
Nadeem

5
Lütfen cevabın şu anda doğru olduğunu unutmayın (düzenlenmiştir), olumsuz oyların nedeni önceki cevaptır (düzenlemeden önce)
J. Doe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.