我有订单系统,当用户订购某些产品时,他可以为产品留下反馈。
我的问题是当同一订单中有多个产品时。我想在每个产品leave feedback
上放置按钮。
在我的控制器中我有这个
public function orderView($orderId)
{
$order = Order::where('order_id', $orderId)->where('status', 1)->where('user_id', Auth::user()->user_id)->first();
$reviews = Review::where('user_id', Auth::user()->user_id)->get();
return View::make('order_details', [
'order' => $order,
'reviews' => $reviews
]);
}
该函数查询orders
表和reviews
表。然后在页面上我试图这样做
@foreach($reviews as $review)
@if($item->product_id == $review->product_id)
@if($review->rating_published == 0)
<a class="btn btn-warning" href="">Wating for Approval</a>
@else
<a class="btn btn-warning" href="">Edit Review</a>
@endif
@else
<a class="btn btn-warning" href="">Leave Review</a>
@endif
@endforeach
目前问题是,如果没有来自已登记用户的评论,我看不到页面上的“离开评论”按钮。
我的评论模型有
public function user()
{
return $this->belongsTo('App\User', 'user_id', 'user_id');
}
public function item()
{
return $this->belongsTo('App\Product', 'product_id','product_id');
}
产品型号
public function reviews()
{
return $this->hasMany('App\Review', 'product_id');
}
答案 0 :(得分:-1)
您可以使用@forelse
刀片语法
@forelse ($users as $user)
<li>{{ $user->name }}</li>
@empty
<p>No users</p>
@endforelse
因此您的代码可能会被重写如下
@forelse($reviews as $review)
@if($item->product_id == $review->product_id)
@if($review->rating_published == 0)
<a class="btn btn-warning" href="">Wating for Approval</a>
@else
<a class="btn btn-warning" href="">Edit Review</a>
@endif
@endif
@empty
<a class="btn btn-warning" href="">Leave Review</a>
@endforelse
因此,如果审核数组为空,则会显示留下评论消息