Php 拉威尔第一次()与第二次(1)——>;得到()

Php 拉威尔第一次()与第二次(1)——>;得到(),php,laravel,Php,Laravel,我正在学习laravel,并且在youtube上有一个教程,我们在那里建立了一个博客。无论如何,我正在尝试制作一个显示单个博客文章的页面,并使用slug而不是id来显示它。无论如何,这是我的博客控制器: class BlogController extends Controller { public function getSingle($slug) { $post = Post::where('slug', $slug)->take(1)->get();

我正在学习laravel,并且在youtube上有一个教程,我们在那里建立了一个博客。无论如何,我正在尝试制作一个显示单个博客文章的页面,并使用slug而不是id来显示它。无论如何,这是我的博客控制器:

class BlogController extends Controller {

    public function getSingle($slug) {
        $post = Post::where('slug', $slug)->take(1)->get();
        return view('blog/single')->with('post', $post);
    }
}
但是这样,它就不起作用了。。例如,在我的博客/单一视图中,我无法访问$post->title。但是,当我这样做的时候:

class BlogController extends Controller {

    public function getSingle($slug) {
        $post = Post::where('slug', $slug)->first();
        return view('blog/single')->with('post', $post);
    }
}
。。它很好用。我有时可以访问标题、正文和创建/更新的内容

第一种方法不起作用的原因是什么

提前谢谢。:)

这是因为
take(1)->get()
将返回一个包含一个元素的值


first()
将返回元素本身。

因此,如果我使用get()方法,我总是获取集合,如果我想显示它,我必须循环遍历它?@miqro完全正确。@AlexeyMezenin如果我使用
first()
这意味着我将获得与我的
where条件
匹配的第一条记录,对吗?