Eloquent: شمارش و تشخیص خالی بودن

آیا راهی برای تشخیص اینکه مجموعه بازگشتی از گزارش:

$result = Model::where(...)->get() 

خالی است یا اینکه تعداد عناصر موجود در آن چقدر است وجود دارد؟

من در حال حاضر از:

!$result  

استفاده می کنم آیا راه درستی است؟

در مورد:

count($result)

آیا همه موارد را پوشش می دهد؟ به عنوان مثال اگر result خالی باشد؟

0
مسعود پرسیده شده در ۱۸ اردیبهشت ۱۳۹۸
16 سوال
0 پاسخ
4امتیاز
Share in:
1 پاسخ

زمانی که شما از ()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 را به عنوان خروجی بر می گرداند. البته این در مواردی که شما به اولین آیتم از نتایج یا فقط یک آیتم نیاز داشته باشید کارآمد خواهد بود.

0
دانیال
پاسخ داده در ۲۰ اردیبهشت ۱۳۹۸
0 سوال
50 پاسخ
27امتیاز
پاسخ شماپاسخ شما با موفقیت ثبت شد.پاسخی وارد نشده است.

ارسال پاسخ