Laravel: Как добавить поле в коллекцию во время цикла - PullRequest
1 голос
/ 24 февраля 2020

После запроса к базе данных у меня есть переменная $orderProducts, которая, когда я print_r, выглядит следующим образом. Я пытаюсь добавить поле к нему (но не сохранить его) до того, как его использует внешний интерфейс. Я пытаюсь пройти через это oop так:

$orderProducts = Order::with('customer', 'orderProducts.inventory_id')->find(260);

foreach ($orderProducts as $orderProduct) {
   $orderProduct->scanned = "N/A";
}

Я продолжаю получать attempt to assign property of non-object error. Я подхожу к этому неправильно?

$ orderProducts

=> App\Models\Order {#1856
     id: 260,
     customer_id: 36,
     orderProducts: Illuminate\Database\Eloquent\Collection {#1871
       all: [
        App\Models\OrderProduct {#1877
           id: 361,
           order_id: 260,
           product_id: 13,
           inventory_id: 223,
        },
        App\Models\OrderProduct {#1877
           id: 361,
           order_id: 260,
           product_id: 13,
           inventory_id: 223,
        },
        App\Models\OrderProduct {#1877
           id: 361,
           order_id: 260,
           product_id: 13,
           inventory_id: 223,
        },
      ]
    }
  }

1 Ответ

5 голосов
/ 24 февраля 2020

Как вы можете видеть здесь

$orderProducts = Order::with('customer', 'orderProducts.variant')->find(260);

$orderProducts - это сам заказ, а не продукты, связанные с этим заказом; вместо этого вы можете сделать что-то вроде этого:

$order = Order::with('customer', 'orderProducts.variant')->find(260);
$orderProducts = $order->orderProducts;
foreach ($orderProducts as $orderProduct) { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...