为什么在这个集合实例上不存在雄辩的属性?

时间:2017-08-04 07:55:51

标签: php laravel-5

我有一个包含列ID的表,有三个文本字段,型号名称为Post

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title', 256);
        $table->string('slug', 256);
        $table->text('body');
        $table->timestamps();
    });
}

从此表中获取数据并从控制器返回有说服力的对象并查看为<p>{{$post}}</p>时,它很好,但在访问属性标题为<p>{{$post->title}}</p>时会出现错误

class BlogController extends Controller
{
    public function single($slug){
        $post = Post::where('slug', '=', $slug)->get();
        //return $post;
        return view('posts.single')->withPost($post);
    }
}

错误:

Property [title] does not exist on this collection instance

1 个答案:

答案 0 :(得分:1)

你应该得到第一个元素而不是集合:

public function single($slug){
    $post = Post::where('slug', '=', $slug)->first();
    //return $post;
    return view('posts.single')->withPost($post);
}
  

因为即使您的查询可以,get也会始终返回一个集合   只返回一行,first返回单个模型实例