راکت
ftp
ftp
6 سال پیش توسط ftp مطرح شد
6 پاسخ

سوال در مورد map

@ali.bayat
@juza66
@davoodkhany
میخوام با map یک سری از فیلد های یک ردیف از جدول رو که null هستند رو نمایش نده و بقیه که null نیستند رو نمایش بده


ثبت پرسش جدید
علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat6 سال پیشمطرح شد
0

map بیشتر برای Collection ها کاربرد داره.
کوئری بیلدر لاراول همچین متدی داره. میتونی استفاده کنی:

$users = DB::table('users')
                    ->whereNotNull('updated_at')
                    ->get();

دستور بالا تمام user هایی که فیلد updated_at اونها null نیست رو نشون میده


ftp
ftp
تخصص :ساده
@ftp6 سال پیشمطرح شد
0

@ali.bayat
علی اقا حرفت درست اما من میخوام تو یک ردیف از جدول اونهایی که nullهستند رو نشون نده و اونهایی که پر هستد رو نشون بده
مثلا در ردیف ۱
۴ تا ستون داریم ۲ تاش nullهستند و دو تاش پر هستندمن میخوام بگم هر کدوم که پر هست رو نشون بده


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat6 سال پیشمطرح شد
0

میتونی از whereNotNull در کنار whereNull استفاده کنی دیگه..


راه دیگه هم استفاده از متد filter مستقیما روی Collection هست:

فرض کن داده برگشتی کالکشن لاراول به شکل آرایه زیر هست:

[1, 2, 3, null, false, '', 0, []]

از متد filter که استفاده کنی:

$users->filter()->all()

این شکلی میشه:

[1, 2, 3]

خودش مقادیر null, false و خالی رو حذف میکنه


ftp
ftp
تخصص :ساده
@ftp6 سال پیشمطرح شد
0

@ali.bayat
الان من این کار رو انجام دادم باز nullها رو نشون میده

$form_tool=Form_TollsModel::where([['admin_id',$id],['form_id',$form_id]])->get();
       return $form_tool>filter()->all();

علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat6 سال پیشمطرح شد
0

شما داری آرایه ای رو که شامل آرایه های دیگه هست رو وارد کالکش میکنی
معلومه که کار نمیکنه....
اگر آرایه کاملا خالی باشه حذفش میکنه.. نه وقتی یک اندیسش خالی باشه....


  • اگر میخواهی از الکوئنت استفاده کنی، به شکل زیر:

    $data = FormModel::get()->pluck('admin_id');
    $dataWithoutNulls = $data->filter()->all();

    احتیاجی هم نیست از collect استفاده کنی چون برگشتی الکوئنت خودش instance کالکشن هست

  • از روش کوئری بیلدر استفاده کن. بالاتر توضیحش دادم. whereNotNull ...


ftp
ftp
تخصص :ساده
@ftp6 سال پیشمطرح شد
0

@ali.bayat
علی اقا ببخشید اما من این کد رو میزنم فقط دو تا فیلد رو نشون میده در صورتی که باید ۳ فیلد رو نشون بده

 $form_tool=Form_TollsModel::where([['admin_id',$id],['form_id',$form_id]])->get()->pluck('admin_id','form_id','tool_id');
        return $form_tool->filter()->all();

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام