我有以下表格:
订单:身份证等…
订单行:ID、订单ID、产品ID等…
产品:身份证、名称等。
外键已定义。
我的拉威尔模型定义为:
class Order
public function orderLine()
{
return $this->hasMany('App\OrderLine');
}
class OrderLine
public function order()
{
return $this->belongsTo('App\Order');
}
public function product()
{
return $this->belongsTo('App\Product');
}
class Product
public function orderLine()
{
return $this->hasMany('App\OrderLine');
}
我试过很多东西,但都没用。对我来说这是最好的解决办法,但没用。
class OrderController
public function show($id)
{
$user = Auth::user();
$order = Order::where('user_id', '=', $user->id)->with(['orderLine.product'])->findOrFail($id);
return view('layouts/order/index', compact('order'));
}
我很难在视图中显示以下数据:
@foreach($order->orderLine as $key => $orderLine)
<tr>
<td>{{$orderLine->product->name}}</td>
<tr>
@endforeach
未加载产品对象。我想在上面的循环中显示产品名。
最佳答案
尝试这样做:
public function show($id)
{
$user = Auth::user();
$order = Order::with(['orderLines', 'orderLines.product'])
->where('user_id', '=', $user->id)
->findOrFail($id);
return view('layouts/order/index', compact('order'));
}
class OrderLine
public function order()
{
return $this->belongsTo(\App\Order::class, 'order_id');
}
public function product()
{
return $this->belongsTo(\App\Product::class, 'product_id');
}
class Order
public function orderLines()
{
return $this->hasMany(\App\OrderLine::class);
}
将
orderLine
的名称更改为orderLines
,因为order有许多orderline。在你的刀刃上:
@foreach($order->orderLines as $orderLine)
<tr>
<td>{{$orderLine['product']->title}}</td>
<tr>
@endforeach
关于php - Laravel:在多个级别加载对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56755983/