嗨,需要您的帮助。我无法使订单商品显示在订单视图中。我正在使用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);
}
答案 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');
}