Php laravel查询-调用未定义的属性-集合

Php laravel查询-调用未定义的属性-集合,php,laravel,eloquent,Php,Laravel,Eloquent,我正在尝试将一些数据附加到视图,并且已经成功地执行了多次。但是,我的最新页面抛出了一个错误: Undefined property: Illuminate\Database\Eloquent\Collection::$pay_method 在我的控制器中,我有以下查询: $receipt = Receipt::where('invoice_id', '=', $id)->get(); $id是保存发票id的变量 我将对象传递给视图,如下所示: return View::make('gr

我正在尝试将一些数据附加到视图,并且已经成功地执行了多次。但是,我的最新页面抛出了一个错误:

Undefined property: Illuminate\Database\Eloquent\Collection::$pay_method
在我的控制器中,我有以下查询:

$receipt = Receipt::where('invoice_id', '=', $id)->get();
$id是保存发票id的变量

我将对象传递给视图,如下所示:

return View::make('greenfee.edit')
        ->with('receipt', $receipt);
在视图中-为了测试,我只是在做:

{{ $receipt->pay_method }}
“pay_method”是表中的一列

这会抛出错误

为了进一步测试,我使用print\r测试了$receipt包含的数据,并且该属性肯定存在-这里有一个摘录:

[pay_method] => card
这就是我所期望的价值

那么-我在这里遗漏了什么和误解了什么

还有-什么时候应该(或不应该)在查询中使用get()

感谢您的帮助
Ta

集合基本上是一个结果数组,因此您必须使用for循环或其他方法对其进行迭代。 但是,如果您试图仅获取一条记录/行,则应使用:

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

receive::where('invoice_id','=',$id)->get()返回对象数组(集合)。因此,当您获得该集合时,您正在对该集合调用pay_方法,该集合在laravel集合中不存在。你需要做的是在视图中遍历收据。嗨-谢谢你提供的信息-我改为first(),如下所示,效果很好。谢谢你好-现在很有道理-谢谢。我没有完全理解其中的区别,尤其是因为我只希望返回一个结果。代码修改工作很好-谢谢