ব্যবহার করার সময় ->get()
আপনি কেবল নীচের কোনওটি ব্যবহার করতে পারবেন না:
if (empty($result)) { }
if (!$result) { }
if ($result) { }
কারণ আপনি dd($result);
যদি খেয়াল করেন যে কোনও উদাহরণ Illuminate\Support\Collection
না পাওয়া গেলেও সর্বদা ফিরে আসে। মূলত আপনি $a = new stdClass; if ($a) { ... }
যা যাচাই করছেন তা যা সর্বদা সত্য ফিরে আসবে।
কোনও ফলাফল রয়েছে কিনা তা নির্ধারণ করতে আপনি নীচের যে কোনও একটি করতে পারেন:
if ($result->first()) { }
if (!$result->isEmpty()) { }
if ($result->count()) { }
if (count($result)) { }
আপনি কোয়েরি বিল্ডারের ->first()
পরিবর্তে ব্যবহার ->get()
করতে পারেন যা প্রথম পাওয়া মডেলটির উদাহরণ বা null
অন্যথায় ফিরে আসবে । আপনার প্রয়োজন হলে বা ডাটাবেস থেকে কেবল একটি ফলাফল আশা করতে পারলে এটি দরকারী।
$result = Model::where(...)->first();
if ($result) { ... }
নোট / রেফারেন্স
বোনাস তথ্য
সংগ্রহ এবং কোয়েরি বিল্ডারের পার্থক্যগুলি লারাভেলের নতুনদের কাছে কিছুটা বিভ্রান্ত হতে পারে কারণ পদ্ধতির নামগুলি প্রায়শই দুজনের মধ্যে একই থাকে। যে কারণে আপনি কী কাজ করছেন তা জেনে বিভ্রান্তিকর হতে পারে। ক্যোয়ারি বিল্ডার মূলত আপনি কোনও পদ্ধতি কল না করা অবধি ক্যোয়ারী তৈরি করেন যেখানে এটি ক্যোরিটি কার্যকর করবে এবং ডাটাবেসটিকে হিট করবে (যেমন আপনি যখন নির্দিষ্ট পদ্ধতিগুলির মতো ->all()
->first()
->lists()
এবং অন্যদের কল করেন)। সেই পদ্ধতি এছাড়াও উপস্থিত Collection
বস্তু, যার ক্যোয়ারী নির্মাতা থেকে প্রত্যাগত পেতে পারেন যদি সেখানে একাধিক ফলাফল নেই। আপনি যদি নিশ্চিত হন না যে আপনি প্রকৃতপক্ষে কোন শ্রেণীর সাথে কাজ করছেন, var_dump(User::all())
তবে বাস্তবে এটি কোন ক্লাসে ফিরে আসছে তা দেখার জন্য এবং পরীক্ষা করার চেষ্টা করুন (সহায়তার সাথে)get_class(...)
)। আমি সংগ্রহের ক্লাসের জন্য উত্স কোডটি পরীক্ষা করে দেখার জন্য আপনাকে অত্যন্ত পরামর্শ দিচ্ছি, এটি বেশ সহজ। তারপরে কোয়েরি বিল্ডারটি পরীক্ষা করে দেখুন এবং ফাংশন নামের মধ্যে সাদৃশ্যগুলি দেখুন এবং এটি কখন ডাটাবেসে হিট হয় তা সন্ধান করুন।
first()
, ফলাফলটি ভিন্নget()
, যা!$result
খালি ফলাফল হিসাবে চেক করা যায়null