Laravel: редактирование объекта с помощью итерации? - PullRequest
0 голосов
/ 11 марта 2020

В моем контроллере у меня есть переменная $products, которую я получаю из запроса к БД

$products = Product::with('customer', 'variants')->find($orderId);

Я возвращаю это как JSON на мой интерфейс, который выглядит следующим образом:

"products":[
      {
         "id":414,
         "order_id":286,
         "variant": {
               "color": "green"
          },
          "price": 99
      },
      {
         "id":415,
         "order_id":287,
         "variant": {
               "color": "red"
          },
          "price": 99
      }
]

В контроллере я пытаюсь изменить цвет цены на пустую строку, поэтому я попытался сделать это, но продолжаю получать ошибку, пытаясь получить свойство не- объект`. Что я делаю не так?

            $products = Product::with('customer', 'variants')->find($orderId);

            foreach ($products as $product) {
                $product->variant->color = "blue";
            }

1 Ответ

0 голосов
/ 11 марта 2020

при использовании first() вы получите только один предмет, а не набор предметов.

Чтобы получить товары, попробуйте использовать get() вместо fisrt().

отредактируйте объект в итерации, если variant является Eloquent Model и имеет отношение к Product, вы можете использовать:

foreach ($products as $product) {
    $product->variant->color = "blue";
    $product->variant->save();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...