آیا راهی برای تشخیص اینکه مجموعه بازگشتی از گزارش:
$result = Model::where(...)->get()
خالی است یا اینکه تعداد عناصر موجود در آن چقدر است وجود دارد؟
من در حال حاضر از:
!$result
استفاده می کنم آیا راه درستی است؟
در مورد:
count($result)
آیا همه موارد را پوشش می دهد؟ به عنوان مثال اگر result خالی باشد؟
زمانی که شما از ()get<- استفاده می کنید موارد زیر قابل استفاده نخواهد بود:
if (empty($result)) { }
if (!$result) { }
if ($result) { }
اگر از تابع dd به صوت زیر استفاده کنید:
dd($result);
مشاهده خواهید کرد که جنس result از نوع Illuminate/Support/Collection است حتی اگر رکوردی در پاسخ گزارش برنگشته باشد. علاوه بر این اگر متغیر result را به صورت زیر هم بررسی کنید:
$a = new stdClass;
if ($a)
{
...
}
مقدارش همیشه true خواهد بود.
برای اینکه بررسی کنید در نتیجه گزارش رکوردی بازگردانده شده یا نه می توانید به یکی از صورت های زیر:
if ($result->first()) { }
if (!$result->isEmpty()) { }
if ($result->count()) { }
if (count($result)) { }
این کار را انجام دهید.
همچنین می توانید از ()first<- به جای ()get<- در query builder استفاده کنید که در صورت موجود بودن رکوردی اولین نمونه Model را بر می گرداند در غیر اینصورت مقدار Null را به عنوان خروجی بر می گرداند. البته این در مواردی که شما به اولین آیتم از نتایج یا فقط یک آیتم نیاز داشته باشید کارآمد خواهد بود.