راکت
pari.a
pari.a
7 سال پیش توسط pari.a مطرح شد
9 پاسخ

حذف یک mutator در eagerload

سلام دوستان به یه موردی برخوردم لطفا اگه کسی میدونه حتما کمک کنه که برام مهمه.
یه mutator دارم که اسمش user_full_name هست تا نام و نام خانوادگی کاربر رو کنار هم نمایش بده.
همه جای سایت ازش استفاده میکنم جز یه جا که نمیخوام کار کنه.
حالا من این کد رو نوشتم:

return response()->json(Auth::user()->orders()
->with(['user' => function($q){ $q->first()->setAppends([]); })

داخل خود کالکشن اعمال میشه اما تو جواب دوباره نام و نام خانوادگی رو برمیگردونه!لطفا کمکم کنید


ثبت پرسش جدید
mahdi khanzadi
mahdi khanzadi
تخصص :Software engineer
@khanzadimahdi7 سال پیشمطرح شد
0

از map استفاده کنید و کلید مورد نظر رو حذف کنید یا به دلخواه تغییر بدید.

$multiplied = $collection->map(function ($item, $key) {
    unset($item['userFullName']);
    return $item;
});

pari.a
pari.a
@pari.a7 سال پیشمطرح شد
0

خب اینجوری اون ساختاری که برمیگردونم به هم میخوره
چون یه api هست روی گوشی و به هیچ وجه نمیخوام چیزی به هم بریزه
اگه اشتباه میکنم لطفا جزیی تر رومثالم توضیح بدید
@khanzadimahdi


hamed
hamed
@shojai806 سال پیشمطرح شد
0

سلام. این مشکلو منم دارم. کسی راه حلی براش داره ؟


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

تو کنترلر API یه متد بساز و داخلش با array_map فقط گزینه هایی رو که میخواهی برگردون.
نمیشه که ما کل ساختار دیتا بیس رو بصورت json به کاربر بدیم.. اگر لازم باشه این کارو میکنیم اما در غیر این‌ صورت تمرین خوبی برای ساخت API نیست


hamed
hamed
@shojai806 سال پیشمطرح شد
0

@ali.bayat
من برای api نمی خوام. در بدنه سایتم در یک جا نمی خوام mutator کار کنه. همه جا تاریخ رو شمسی میکنه ولی یک جا نمی خوام این اتفاق بیفته


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

@shojai80

توضیحات بالا مربوط به این تاپیک بود. سوال شما کمی فرق داره.

میتونی توی مدل یه پراپرتی تعریف کنی.. که پیش فرض مقدارش true باشه. مثلا:

public $persianDate = true;

بعد داخل mutator چک میکنی.

  • اگر مقدار پراپرتی true بود که تاریخ شمسی رو برمیگردونی
  • اگر false بود، خود مقدار اصلی تاریخ رو بر میگردونی

حالا جایی که نمیخواهی تاریخ شمسی بشه مدل رو بصورت دستی Instantiate میکنی (نمونه سازی میکنی)

$post = new Post;
$post->persianDate = false;
$post->date = Carbon::now();

echo $post->date;

یا اینکه میتونی Accessor های جدا درست کنی


TEFO
TEFO
تخصص :لاراول
@tefo.ha276 سال پیشمطرح شد
1

یه متد وجود داره به اسم getOriginal به این صورت میتونین استفاده کنین

$user->getOriginal()

اینجوری فقط رکورد های مدل رو دریافت میکنه


hamed
hamed
@shojai806 سال پیشمطرح شد
hamed
hamed
@shojai806 سال پیشمطرح شد

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

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