Изменение данных в сборе не сохраняется - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь добавить атрибуты продуктов в эту коллекцию:

   $days = $days->each(function($day) use($orderedDays, $order) {

      $foods = collect($day->foods)->map(function(&$food, $keys) use($day, $orderedDays, $order){

        if(in_array($day['id'], $orderedDays)) {

          $item = OrderItem::where('order_id', $order->id)->where('meal_plan_day_id', $day['id'])->first();

          $qty = $item->qty;
          $food->qty = $qty;
          return $food;

        } else {
          $food->qty = 0;
          return $food;
        }

      });

    });

Моя проблема в том, что $ food-> qty не сохраняется, когда я выкидываю карту:

                    "food_name": "test",
                    "final_price": 51000,
                    "max_no_order": 1,
                    "extra_no_price": 51000,
                    "qty" :2

Но из каждого не спасено

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Вы также должны использовать функцию карты в $days, если хотите изменить данные, и в этой функции вернуть измененную переменную $days.

$days = $days->map(function ($day) use ($orderedDays, $order) {

    $day->foods = collect($day->foods)->map(function ($food, $keys) use ($day, $orderedDays, $order) {

        if (in_array($day['id'], $orderedDays)) 
        {
            $item = OrderItem::where('order_id', $order->id)->where('meal_plan_day_id', $day['id'])->first();

            $qty = $item->qty;
            $food->qty = $qty;
        } 
        else
        {
            $food->qty = 0;
        }

        return $food;

    });

    return $day;

});
0 голосов
/ 06 сентября 2018

Вы должны присвоить это значение массива по ссылке.С "& $ variable".

$days = $days->each(function($day) use($orderedDays, $order) {

  $foods = collect($day->foods)->map(function(&$food, $keys) use($day, $orderedDays, $order){

    if(in_array($day['id'], $orderedDays)) {

      $item = OrderItem::where('order_id', $order->id)->where('meal_plan_day_id', $day['id'])->first();

      $qty = $item->qty;
      $food->qty = $qty;
      return $food;

    } else {
      $food->qty = 0;
      return $food;
    }

  });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...