लारवेल एलोकेंट - एक पंक्ति प्राप्त करें


91

यह एक साधारण प्रश्न हो सकता है, लेकिन मैं इसका पता नहीं लगा सकता। मैं ईमेल का उपयोग करके एक उपयोगकर्ता प्राप्त करने की कोशिश कर रहा हूं:

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

लेकिन यह $ उपयोगकर्ताओं का एक सरणी (आयाम 1) लौटा रहा है। इसलिए यदि मुझे नाम प्राप्त करना है, तो मुझे करना होगा $user[0]['first_name']

मैंने उपयोग करने की कोशिश की limit(1)या take(1), या यहाँ तक कि उपयोग भी किया ->toArray()लेकिन कोई फर्क नहीं पड़ा।

मैं क्या गलत कर रहा हूं?


1
आप क्वियर रिजल्ट से एक पंक्ति प्राप्त करना चाहते हैं? या आप डेटाबेस क्वेरी से केवल एक पंक्ति चाहते हैं?

जवाबों:



22

आप भी यह कर सकते हैं

इससे पहले कि आप इसका उपयोग करें आपको नियंत्रक में डीबी मुखौटा घोषित करना होगा बस इसके लिए यह लाइन डालें

use Illuminate\Support\Facades\DB;

अब आप इसका उपयोग करके एक पंक्ति प्राप्त कर सकते हैं

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

या इसके द्वारा भी

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

यह एक सरणी को इसमें केवल एक आइटम के साथ लौटाता है और जबकि पहला एक वस्तु देता है। यह याद रखना।

उम्मीद है की यह मदद करेगा।


7

लारवेल एलोकेंट का उपयोग करके आप first()विधि का उपयोग करके एक पंक्ति प्राप्त कर सकते हैं ,

अगर where()हालत नहीं मिली तो यह तालिका की पहली पंक्ति को लौटाता है अन्यथा यह दिए गए मानदंडों की पहली मिलान पंक्ति देता है।

वाक्य - विन्यास:

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

उदाहरण:

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

0

लार्वा 5.8

यदि आपको संपूर्ण पंक्ति की आवश्यकता नहीं है, तो आप value()विधि का उपयोग करके रिकॉर्ड से एकल मान निकाल सकते हैं । यह पद्धति सीधे कॉलम का मान लौटाएगी:

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

डॉक्स की जाँच करें



-4

लारवेल 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();स्वीकार किए गए उत्तर में प्रस्तावित अनुसार केवल पहले उपयोगकर्ता को भेजने का निर्देश दें ।
म्लादेन डैनिक

-15

आप भी इसका इस्तेमाल कर सकते हैं

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

2
यह एक तत्व नहीं बल्कि एक संग्रह लौटाएगा।
Danon

यह डेटा को पूरी तरह से प्रभावित करेगा डेटा न केवल वह एक पंक्ति \
नदीम

5
कृपया ध्यान दें कि उत्तर वर्तमान में सही है (इसे संपादित किया गया है), डाउनवोट्स का कारण पिछला उत्तर है (संपादित करने से पहले)
जे डो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.