为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
跃然一笑 2023-07-21 18:09:57
我正在显示从数据库到 show.blade.php 的数据,但这个问题显示以下是代码: BlockControllerpublic function show(Blog $id)    {        //        $blogs = Blog::findOrfail($id);        return view('blog.show', compact('blogs'));    }显示.blade.php@section('content')            <h3>{{ $blogs->title }}</h3>        @endsectiondd($blogs) 的输出:我尝试了我得到的所有选项,但仍然不起作用..
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

具有该方法签名的$id是一个模型实例。Eloquent 模型实现Illuminate\Contracts\Support\Arrayable. 如果您将某个东西传递Arrayable给正在调用的find,findOrFail它会像您正在查找多条记录一样对待它并返回一个 Collection 。


您有一个集合而不是模型实例。


如果您的方法签名没有键入提示模型,那么它会更有意义,因为您将拥有“id”。如果您为这些方法键入提示模型,通常您会使用路由模型绑定。


路由模型绑定:


public function show(Blog $blog)

{

    // $blog is the matching record

}

没有模型绑定,只获取参数:


public function show($blog)

{

    // $blog is just the 'id' or what ever you decided to pass in the URL

}

您的路由有一个名为 name 的参数,blog因为您的资源名为“blog”。为了实现隐式路由模型绑定,您必须将参数名称与签名中的参数名称相匹配。


查看完整回答
反对 回复 2023-07-21
?
HUH函数

TA贡献1836条经验 获得超4个赞

在您的函数中show(Blog $id), $id 是 Blog::class 实例

接下来你需要做什么$blogs = Blog::findOrfail($id->id);


查看完整回答
反对 回复 2023-07-21
  • 2 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信