我使用post_id显示我的帖子,我按照当前的文档使用slug显示我的帖子。当我创建帖子时,我看到slug也被添加到数据库中。 当我点击我的链接查看帖子时,它会带我到帖子中使用slug。但是我什么都没有显示,但这个错误是我以前从未见过的:
此集合实例上不存在属性[title]。 (查看:C:\ xampp \ htdocs \ blog \ resources \ views \ post.blade.php)
这是我的帖子模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Cviebrock\EloquentSluggable\Sluggable;
class Post extends Model
{
use Sluggable;
public function sluggable()
{
return [
'slug' => [
'source' => 'title'
]
];
}
protected $fillable = ['title', 'content', 'user_id','category_id','photo_id'];
public function category(){
return $this->belongsTo('App\Category');
}
public function user(){
return $this->belongsTo('App\User');
}
public function photo(){
return $this->belongsTo('App\Photo');
}
public function comments(){
return $this->hasMany('App\Comment');
}
}
我的路线:
Route::get('/post/{slug}', ['as'=>'home.post',
uses'=>'AdminPostsController@post']);
AdminPostsController的post函数如下所示:'
public function post($slug){
$post = Post::whereSlug($slug)->get();
// $posts = Post::all();
$categories = Category::all();
return view('post', compact('post','categories'));
}
在视图中我有这个:
<h1>{{$post->title}}</h1>
答案 0 :(得分:0)
据我所知,compact会返回一个数组,并且从你那里看错也很明显你是在尝试从数组中获取对象。
在您的视图中尝试此操作
{{$ post [&#39; title&#39;]}}
检查你是否有价值......
答案 1 :(得分:0)
我浏览了github,然后发现错误发生在我在控制器中使用的get()中。因为我只想要一个值,所以我必须使用first()代替。
$post = Post::whereSlug($slug)->first();