所以我定义了OrderProduct.php
和'Product.php'模型之间的关系:
OrderProduct.php
:
public function product()
{
return $this->belongsTo('App\Product');
}
Product.php
public function order()
{
return $this->belongsTo('App\OrderProduct');
}
OrderController
功能
public function orderShow($id)
{
//$order = Order::where('id', $id)->first();
$products = OrderProduct::where('id', 32)->first();
return view('admin.orders.show', compact('order', 'products'));
}
当我这样做时:
@foreach($products as $product)
<?php dd($product) ?>
@endforeach
我得到Invalid argument supplied for foreach()
如何解决这个问题?
答案 0 :(得分:1)
你只有第一张唱片 尝试
public function orderShow($id)
{
//$order = Order::where('id', $id)->get();
$products = OrderProduct::where('id', 32)->get();
return view('admin.orders.show', compact('order', 'products'));
}
修改强>
如果您需要通过 id 检索特定记录,请使用find()
甚至findOrFail()
方法(您可以在docs中找到差异);
public function orderShow($id)
{
// this will retrieve record with id=32 from db if it exists,
// and throw Illuminate\Database\Eloquent\ModelNotFoundExceptio otherw
$product = OrderProduct::findOrFail(32);
return view( 'admin.orders.show', compact('product') );
}
然后在您的刀片模板中,您可以将$product
信息作为对象访问,就像这样
{{ $product->name }}
{{ $product->otherProductProperty }}
答案 1 :(得分:0)
你正在给予
$products = OrderProduct::where('id', 32)->first();
它只会获取一条记录,结果将不会是一个集合,所以你不能为此做好预测
您可以将其更改为
$products = OrderProduct::where('id', 32)->get();
让它发挥作用
您甚至需要检查使用的关系。一个将属于,另一个将是hasmany
答案 2 :(得分:0)
你应该试试这个......
public function orderShow($id)
{
//$order = Order::where('id', $id)->get();
$products = OrderProduct::where('id', 32)->with('product')->get();
return view('admin.orders.show', compact('order', 'products'));
}