লারাভেল স্বতন্ত্র - একটি সারি পান


91

এটি একটি সাধারণ প্রশ্ন হতে পারে, তবে আমি এটি বের করতে পারি না। আমি ব্যবহার করে ইমেল দ্বারা একটি ব্যবহারকারী পেতে চেষ্টা করছি:

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

তবে এটি $ ব্যবহারকারীদের একটি অ্যারে (মাত্রা 1 এর) ফিরিয়ে দিচ্ছে। সুতরাং আমি যদি নাম পেতে চাই তবে আমাকে করতে হবে $user[0]['first_name']

আমি ব্যবহার করার চেষ্টা limit(1)বা take(1), অথবা এমনকি ব্যবহার ->toArray()কিন্তু কোন পার্থক্য ছিল।

আমি কি ভুল করছি?


4
আপনি কোয়েরি ফলাফল থেকে এক সারি পেতে চান? অথবা আপনি কেবল ডাটাবেস ক্যোয়ারী থেকে একটি সারি চান?

উত্তর:



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();গৃহীত উত্তরের প্রস্তাবিত হিসাবে আপনাকে প্রথম ব্যবহারকারী পাঠানোর জন্য ডাটাবেসকে নির্দেশ দিন ।
ম্লাদেন ডানিক

-14

আপনি এটি ব্যবহার করতে পারেন

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

4
এটি কোনও উপাদান নয়, একটি সংগ্রহ ফিরিয়ে দেবে।
ড্যানন

এটি কেবলমাত্র তার এক সারিতেই নয় পুরো প্রভাবিত ডেটা উপাত্ত ফিরিয়ে দেবে
নাদিম

4
দয়া করে মনে রাখবেন উত্তর বর্তমানে সঠিক (এটা সম্পাদিত হয়), downvotes জন্য কারণ পূর্ববর্তী উত্তর (সম্পাদনা করার আগে) হল
জে ডো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.