laravel 5 collection pull方法什么都不打印

时间:2015-08-28 19:06:35

标签: php mysql laravel-5

我的控制器方法返回此数组,我知道正在返回数据

return view('bill')->with('itemarray',Menu::where('itemname','Apple Pie')->get());

我的观点是假设像这样对它进行操作但print_r方法打印数组但是表中的td没有任何内容而且我没有收到错误

@if(isset($itemarray))
<table>
<tr>
<td>{{ $itemarray->pull('itemname') }} <!-- this prints nothing --> </td>
<td> {{ $itemarray->pull('itemprice') }} <!-- this prints nothing --> </td> 
</tr>  
</table>
<p>  {{  print_r($itemarray) }} <!-- this prints ok --> </p>
@endif

1 个答案:

答案 0 :(得分:3)

此处的根本问题是get() 始终会返回集合。即使您的查询只有一个或零结果。如果您只期望一个结果,建议使用first()

return view('bill')->with('item',Menu::where('itemname','Apple Pie')->first());

这意味着您将在视图中处理模型,因此:

@if(isset($item))
<table>
<tr>
<td>{{ $item->itemname }}</td>
<td> {{ $item->itemprice }}</td> 
</tr>  
</table>
@endif

我还建议您将isset()更改为!empty(),因为这也会检查null(如果没有匹配的记录)

@if(!empty($item))