我有以下表格:
订单:身份证等…
订单行: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/

10-09 13:19