试图弄清楚为什么我的foreach导入不起作用

时间:2017-05-03 08:24:25

标签: php mysql laravel loops foreach

我认为:

@foreach($cart_item->where('shopping_cart_id','37') as $cart) 

 <li class="clearfix">{{$cart->prize_id}}</li>

@endforeach

有人可以帮我弄清楚我的foreach循环有什么问题吗?

我已经尝试基本上显示id了,但它给了我一个php错误。

“未定义变量cart_item”,但我确实在购物车控制器上定义了变量:

$cart_item = ShoppingCartItem::where('shopping_cart_id',$cookie->cart_id)->where('prize_id',$_POST['prize_id'])->first();

4 个答案:

答案 0 :(得分:0)

根据您编辑的问题,解决方案是将$cart_item传递给您的观点。

完成后,您可以执行以下操作:

@foreach($cart_item as $cart)

您目前正在做的不是推荐的做法。此逻辑应位于Controller中,而不是View中。

答案 1 :(得分:0)

您必须将该变量传递给视图。 我猜它是Laravel所以只是在调用你的视图时将它添加到comapct函数

view('viewname', compact('cart_item'))

和其他建议不要那样做,最好在该模型中定义一个范围函数来为你做。

答案 2 :(得分:0)

首先,您要在视图上添加控制器逻辑,这确实是一种不好的做法。

您的问题在您的控制器行上显示:

$cart_item = ShoppingCartItem::where('shopping_cart_id',$cookie->cart_id)->where('prize_id',$_POST['prize_id'])->first();

返回NULL,表示在查询中找不到ShoppingCartItem,或者您只是没有将变量发送到视图。

在您的视图中,您可以控制$ cart_item变量是否存在,如下所示:

@if(isset($cart_item))
  @foreach($cart_item->where('shopping_cart_id','37') as $cart) 

   <li class="clearfix">{{$cart->prize_id}}</li>

 @endforeach
@endif

如果未设置$ cart_item变量,这将防止将来出现错误。

答案 3 :(得分:0)

我认为你应该这样做

$cart_item = ShoppingCartItem::where('shopping_cart_id',$cookie->cart_id)->where('prize_id',$_POST['prize_id'])where('shopping_cart_id','37')->get();

然后在你的视图中使用它

@foreach($cart_item as $cart) 

 <li class="clearfix">{{$cart->prize_id}}</li>

@endforeach