2015-08-28 4 views
0

мой метод контроллера возвращает этот массив, я знаю, что данные возвращаетсяLaravel 5 коллекция метод тянуть печатает ничего

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

мой взгляд, предполагают, чтобы воздействовать на него, как это, но метод print_r печатает массив, но и тд таблицы не имеет ничего в нем, и я не получаю сообщение об ошибке

@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 
+0

Ожидаете ли вы один элемент типа «Меню» или несколько? Потому что это не так, как работает «pull». – lukasgeiter

+0

@lukasgeiter Я ожидаю, что один элемент, просто имя и цена из записи .... какой метод следует использовать, потому что '{{$ itemarray-> itemname}}' дайте мне ошибку undefined property' – JevStar7

ответ

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)) 
+0

:) mad ting. .. он работает ... спасибо миллион :) – JevStar7

Смежные вопросы