سلام
برای یسری محاسبات خاص accessor تعریف کردم و این رو جاهای خاص نمایش می دم حالا تو یه کوئری می خوام مخفی کنم وقتی مخفی می کنم paginate رو حذف می کنه
$data = Invoice::where($where)
->orderBy('id', 'DESC')
->paginate($request->size)->makeHidden(['field1', 'field2', 'field3']);
روشی هست که هم accessor مخفی بشه هم paginate سر جاش بمونه
$data = Invoice::where($where)
->orderBy('id', 'DESC')
->paginate($request->size);
$data->getCollection();
$data->transform(function ($row) {
$hiddens = ['field1','field2','field3'];
$row = array_diff_key($row->toArray(),array_flip($hiddens));
return $row;
});
۲ راه کلی به نظرم میرسه
۱. استفاده کردن از کلاس های Resource که کارشون Transformation داده هاست
۲. استفاده از متد select و سلکت کردن فیلد ها به صورت دستی
گزینه اول و makeHidden یک مشکل مشترک دارند.. اون هم اینکه ابتدا داده ها رو کامل میگیرند و سپس بر حسب نیاز اون ها رو فیلتر میکنند.. یعنی کوئری که اجرا میشه همه موارد رو میگیره و بعد فیلتر انجام میشه که در مقیاس بالا روی پرفرمنس اثر میگذاره
$data = Invoice::where($where)
->orderBy('id', 'DESC')
->paginate($request->size);
$data->getCollection();
$data->transform(function ($row) {
$hiddens = ['field1','field2','field3'];
$row = array_diff_key($row->toArray(),array_flip($hiddens));
return $row;
});
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟