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

سوال در مورد map

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


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

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

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

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


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

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


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

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


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

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

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

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

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

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

[1, 2, 3]

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


ftp
تخصص : ساده
@ftp 5 سال پیش آپدیت شد
0

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

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

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

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


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

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

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

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


ftp
تخصص : ساده
@ftp 5 سال پیش مطرح شد
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();

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

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