2013-07-15 1 views
2

Я пытаюсь прикрепить некоторые данные к представлению и смог сделать это несколько раз с успехом. Однако моя последняя страница бросает ошибку:запрос laravel - вызов недофинансированного имущества - коллекция

Undefined property: Illuminate\Database\Eloquent\Collection::$pay_method 

В моем контроллере у меня есть следующий запрос:

$receipt = Receipt::where('invoice_id', '=', $id)->get(); 

$ идентификатор переменный держит идентификатор счета.

Я передаю объект в представлении следующим образом:

return View::make('greenfee.edit') 
     ->with('receipt', $receipt); 

По мнению - для тестирования я просто делаю:

{{ $receipt->pay_method }} 

«pay_method» будучи столбец в таблице ,

Это вызывает ошибку.

Чтобы проверить дальше я протестировал $ Квитанция содержит данные с помощью print_r и свойство, безусловно, есть - вот выдержка:

[pay_method] => card 

и значение, которое я бы ожидать.

Так что, что мне не хватает и непонимаю здесь?

Также - когда мне (или нет) использовать get() по запросу?

Все оцененная помощь Та

+1

'прочтении :: где ('invoice_id', '=', $ ID) -> получить();' возвращает массив объектов (коллекции). Поэтому, когда вы получаете коллекцию, вы вызываете pay_method в коллекции, которая не существует в коллекции laravel. То, что вам нужно сделать, это перебирать квитанции в представлении. – Altrim

+0

Привет - спасибо за информацию - я изменил на first(), как показано ниже, и отлично работает. Спасибо – Ray

ответ

3

Коллекция в основном массив результатов, поэтому вам придется итерацию над ним с цикл или что-то. Однако, если вы пытаетесь просто принести одну запись/строку, которую следует использовать:

$receipt = Receipt::where('invoice_id', '=', $id)->first(); 
+0

Привет - теперь имеет прекрасный смысл - спасибо. Я не совсем понял разницу, тем более, что ожидал возвращения только одного результата. исправление кода отлично работает - спасибо – Ray

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

  • Нет связанных вопросов^_^