对2个Laravel Eloquent电话感到困惑

时间:2015-11-10 20:47:43

标签: php laravel orm eloquent

所以我一直在制作基于我遵循的一系列教程制作基本CMS的网络应用程序。但现在我正在开发自己的项目。

我正在进行一些更有说服力的电话,而且我不确定为什么这样做不好。

$session = \App\Sessions::where('user_id', '=', \Auth::user()->id)
    ->where('task_type', '=', 'Match Pictures')
    ->where('status', '=', 'started')->get();

return $session->session_id;

但是当我回来时:

return $session

我看到数组中的所有数据。

但是我一直在使用它来制作有用的教程应用程序。

  $articles = Article::latest('published_at')->published()->get();

  return $article->title; 

那么为什么第一个不起作用,而第二个起作用呢?我怎么能这样做?

修改

我收到错误消息

  

MatchPictures.php第27行中的ErrorException:未定义的属性:Illuminate \ Database \ Eloquent \ Collection :: $ session_id

1 个答案:

答案 0 :(得分:1)

get会返回一个集合,因此您无法直接访问该集合。

使用get来获取单个模型,而不是first。那么你上面的代码应该可以工作。

或者,您可以使用value方法,它执行相同的操作:

return App\Sessions::where([
    'user_id'   => auth()->id(),
    'task_type' => 'Match Pictures',
    'status'    => 'started',
])->value('session_id');