【问题标题】:laravel query - call to underfined property - collectionlaravel 查询 - 调用未定义的属性 - 集合
【发布时间】:2013-07-15 17:47:12
【问题描述】:

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

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()?

感谢所有帮助 塔

【问题讨论】:

  • Receipt::where('invoice_id', '=', $id)->get(); 返回对象数组(集合)。因此,当您获得集合时,您正在调用 laravel 集合中不存在的集合的 pay_method。您需要做的是遍历视图中的收据。
  • 嗨 - 感谢您的信息 - 我更改为 first() 如下所示,效果很好。谢谢

标签: php laravel eloquent


【解决方案1】:

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

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

【讨论】:

  • 嗨 - 现在很有意义 - 谢谢。我没有完全理解其中的区别,特别是因为我预计只会返回一个结果。代码修订效果很好 - 谢谢
猜你喜欢
  • 2020-11-01
  • 2021-08-08
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 2018-07-30
  • 2019-06-13
相关资源
最近更新 更多