У меня есть отношение многие ко многим между Order
и Product
Product.php
public function orders()
{
return $this->belongsToMany(Order::class)
->withTimestamps()
->withPivot('qty');
}
Order.php
public function products()
{
return $this->belongsToMany(Product::class)
->withTimestamps()
->withPivot('qty');
}
Теперь всякий раз, когда я пытаюсь использовать итерацию в представлении (в этом случае я просто пытаюсь показать форму, которая перебирает все доступные Product
s, я всегда получаю ошибку ...
Property [products] does not exist on this collection instance.
create.blade.php
@foreach ($products->orders as $product)
# Order inputs are here
{{ Form::text('qty', $product->pivot->qty, [
'type' => 'tel',
'min' => 0,
'max' => 20,
'step' => 1,
'placeholder' => '0',
'class' => 'meal'
]) }}
@endforeach
Я также попытался @foreach ($products->orders as $product)
, и оба подхода дают мне одну и ту же ошибку.
Я пытался разными способами в моем контроллере исправить эту ошибку, вотмоя последняя попытка:
OrderControlller.php
public function create()
{
$user = Auth::user();
$products = Product::get();
$orders = $user->orders;
return view('orders.create', compact('products', 'orders', 'user'));
}
ОБНОВЛЕНИЕ
@ ответ Алана правильный, я уверен, однако ...
Я все еще получаю сообщение «Свойство [сводная таблица] не существует в этом экземпляре коллекции» всякий раз, когда я пытаюсь запустить итерацию.
Концепция итерации внутри итерации в этом экземпляре сбивает с толкудля меня.
Я не могу представить, как Laravel обрабатывает поворотное соединение. В тинкере, когда я загружаю только Proтаблица воздуховодов, столбец qty
отсутствует.(Это имеет смысл, потому что это находится на сводной таблице).Это также объясняет эту новую ошибку.
Должен ли я что-то делать в духе этого?:
изменено create.blade.php
@foreach ($products as $product)
{{ Form::text('qty', $product->orders->pivot->qty }}
OrderController.php
$user = Auth::user();
$orders = $user->orders;
$products= []; #pass products to view as an array
$p = $orders->products; #this relationship brings in pivot data?
foreach ($p as $orders) {
#would I then somehow pass just this qty here?
}
Проблема в том, что я всегда получаю ошибку "Свойство не существует", будь то с'products', 'orders' или 'pivot'.