Laravel 框架此集合实例上不存在属性 [title]

我正在显示从数据库到 show.blade.php 的数据,但这个问题显示以下是代码: BlockController


public function show(Blog $id)

    {

        //

        $blogs = Blog::findOrfail($id);

        return view('blog.show', compact('blogs'));

    }

显示.blade.php


@section('content')

    

        <h3>{{ $blogs->title }}</h3>

        

@endsection

dd($blogs) 的输出:我尝试了我得到的所有选项,但仍然不起作用..



跃然一笑
浏览 102回答 2
2回答

慕婉清6462132

具有该方法签名的$id是一个模型实例。Eloquent 模型实现Illuminate\Contracts\Support\Arrayable. 如果您将某个东西传递Arrayable给正在调用的find,findOrFail它会像您正在查找多条记录一样对待它并返回一个 Collection 。您有一个集合而不是模型实例。如果您的方法签名没有键入提示模型,那么它会更有意义,因为您将拥有“id”。如果您为这些方法键入提示模型,通常您会使用路由模型绑定。路由模型绑定:public function show(Blog $blog){&nbsp; &nbsp; // $blog is the matching record}没有模型绑定,只获取参数:public function show($blog){&nbsp; &nbsp; // $blog is just the 'id' or what ever you decided to pass in the URL}您的路由有一个名为 name 的参数,blog因为您的资源名为“blog”。为了实现隐式路由模型绑定,您必须将参数名称与签名中的参数名称相匹配。

HUH函数

在您的函数中show(Blog $id), $id 是 Blog::class 实例接下来你需要做什么$blogs = Blog::findOrfail($id->id);
打开App,查看更多内容
随时随地看视频慕课网APP