订单商品无法显示在Laravel的采购订单视图中

时间:2019-03-01 18:29:20

标签: laravel

嗨,需要您的帮助。我无法使订单商品显示在订单视图中。我正在使用belongsToMany关系。

订单模型

public function orderitems()
{
    return $this->belongsToMany('App\Orderitems', 'id', 'order_id')->orderBy('created_at', 'DESC');
    // return $this->belongsToMany(Orderitems::class)->orderBy('created_at', 'DESC');
}

订单项模型

public function orders()
{
    return $this->belongsToMany('App\Orders', 'id','order_id');
}

显示刀片

@foreach($orders->orderitems as $orderitem)
<tr>
    <td>{{ $orderitem->product_code }}</td>
    <td>{{ $orderitem->product_name }}</td>
    <td>{{ $orderitem->quantity }}</td>
    <td>{{ $orderitem->total_cost }}</td>
</tr>
@endforeach

OrdersController

public function show($id)
{
    $orders = Orders::find($id);
    return view('orders.show')->with('orders', $orders);
}

希望你能帮助我。提前非常感谢您!

更新 我改变了这个关系,而不是很多对多,我使用了一对多,因为我意识到很多项目只有一个ORDER,我遵循@Tim的惯例。现在是我的模型和控制器的样子

订单模型

public function orderItems()
{
    return $this->hasMany('App\Orderitems', 'id', 'order_id')->orderBy('created_at', 'DESC');
}

订单项模型

public function orders()
{
    return $this->belongsTo('App\Orders','id','order_id');
}

控制器

public function show($id)
{
    $order = Orders::find($id);
    $orderItems = $order->orderItems; 
    dd($order->orderitems);
    Log::info($order);
    var_dump($order);        
}

dd的结果为空 enter image description here

1 个答案:

答案 0 :(得分:1)

在使用多对多belongsToMany时,您需要在订单模型中

1- Orderitems类

2对多表名称

3-订单ID(父)

4- Orderitems ID(在这种情况下为孩子)

但是,当您切换到一对多hasMany时,您只需要外键。在订单模型中使用:

<?php
// in Orders model
public function orderItems()
{
    return $this->hasMany('App\Orderitems', 'order_id')->orderBy('created_at', 'DESC');
}

在Orderitems模型中:

<?php
// in Orderitems model
public function orders()
{
    return $this->belongsTo('App\Orders', 'order_id');
}