سلام دوستان به یه موردی برخوردم لطفا اگه کسی میدونه حتما کمک کنه که برام مهمه.
یه mutator دارم که اسمش user_full_name
هست تا نام و نام خانوادگی کاربر رو کنار هم نمایش بده.
همه جای سایت ازش استفاده میکنم جز یه جا که نمیخوام کار کنه.
حالا من این کد رو نوشتم:
return response()->json(Auth::user()->orders()
->with(['user' => function($q){ $q->first()->setAppends([]); })
داخل خود کالکشن اعمال میشه اما تو جواب دوباره نام و نام خانوادگی رو برمیگردونه!لطفا کمکم کنید
از map استفاده کنید و کلید مورد نظر رو حذف کنید یا به دلخواه تغییر بدید.
$multiplied = $collection->map(function ($item, $key) {
unset($item['userFullName']);
return $item;
});
خب اینجوری اون ساختاری که برمیگردونم به هم میخوره
چون یه api هست روی گوشی و به هیچ وجه نمیخوام چیزی به هم بریزه
اگه اشتباه میکنم لطفا جزیی تر رومثالم توضیح بدید
@khanzadimahdi
تو کنترلر API یه متد بساز و داخلش با array_map فقط گزینه هایی رو که میخواهی برگردون.
نمیشه که ما کل ساختار دیتا بیس رو بصورت json به کاربر بدیم.. اگر لازم باشه این کارو میکنیم اما در غیر این صورت تمرین خوبی برای ساخت API نیست
@ali.bayat
من برای api نمی خوام. در بدنه سایتم در یک جا نمی خوام mutator کار کنه. همه جا تاریخ رو شمسی میکنه ولی یک جا نمی خوام این اتفاق بیفته
توضیحات بالا مربوط به این تاپیک بود. سوال شما کمی فرق داره.
میتونی توی مدل یه پراپرتی تعریف کنی.. که پیش فرض مقدارش true باشه. مثلا:
public $persianDate = true;
بعد داخل mutator چک میکنی.
حالا جایی که نمیخواهی تاریخ شمسی بشه مدل رو بصورت دستی Instantiate میکنی (نمونه سازی میکنی)
$post = new Post;
$post->persianDate = false;
$post->date = Carbon::now();
echo $post->date;
یا اینکه میتونی Accessor های جدا درست کنی
یه متد وجود داره به اسم getOriginal به این صورت میتونین استفاده کنین
$user->getOriginal()
اینجوری فقط رکورد های مدل رو دریافت میکنه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟