Laravel first()vs take(1) - > get()

baw*_*wsi 9 php laravel

我正在学习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);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这样,它不会工作..在我的博客/单一视图中,我无法访问$ post-> title例如.但是,当我这样做时:

class BlogController extends Controller {

    public function getSingle($slug) {
        $post = Post::where('slug', $slug)->first();
        return view('blog/single')->with('post', $post);
    }
}
Run Code Online (Sandbox Code Playgroud)

..它工作正常.我有权访问标题,正文和创建/更新.

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

先感谢您.:)

Ale*_*nin 21

这是因为take(1)->get()将返回一个带有一个元素的集合.

first() 将返回元素本身.