无法从Laravel 5.1中的简单模型中获取id

时间:2015-10-13 04:26:50

标签: laravel-5.1

我在Laravel 5.1中定义了一个模型。出于某种原因,我似乎无法从中获取身份:

Psy Shell v0.5.2 (PHP 5.6.13-0+deb8u1 — cli) by Justin Hileman
>>> $survey = \App\Survey::where('id',54)->get();
=> Illuminate\Database\Eloquent\Collection {#682
     all: [
       App\Survey {#693
         id: 54,
         created_at: "2015-10-12 03:18:32",
         updated_at: "2015-10-12 03:18:32",
         location_id: 0,
       },
     ],
   }
>>> echo $survey->id;
PHP error:  Undefined property: Illuminate\Database\Eloquent\Collection::$id on line 1
>>>

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您正在使用' get'检索你的recrods的方法。但事实上,' get' method返回一组模型。

因此,为了获取您的ID,您需要使用例如foreach语句来循环集合。

但您也可以使用另一个选项,只为您提供一个模型实例。

例如:

$survey = \App\Survey::where('id',54)->first();
$survey = \App\Survey::find(54);

两者都将返回单个模型实例。

所以在此之后你可以使用:

echo $survey->id;

访问您的ID。

有关此主题的更多信息,请参阅此链接:Retrieving Single Models / Aggregates

答案 1 :(得分:2)

您正在尝试访问集合上的ID,这将引发错误。尝试将查询修改为

$survey = \App\Survey::where('id',54)->first();

get()替换为first(),它会正常工作。

或者您可以使用find()按主键$survey = \App\Survey::find(54);

获取记录