Сообщение Slug не отображается

Я показывал свои сообщения, используя post_id, я следил за текущей документацией, чтобы показывать свои сообщения с помощью slug. Когда я создаю сообщение, я вижу, что слаг также добавляется в базу данных. Когда я нажимаю на свою ссылку, чтобы просмотреть сообщение, я перехожу к публикации с помощью slug. Однако я ничего не показываю, кроме этой ошибки, которую я никогда раньше не видел:

Свойство [название] не существует в этом экземпляре коллекции. (Просмотр: 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 выглядит так: ´

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>

person user agent    schedule 03.04.2018    source источник


Ответы (2)


Насколько я знаю о compact, он возвращает массив, и из вас, глядя на ошибку, также ясно, что вы пытаетесь получить объект из массива.

Попробуйте это на ваш взгляд

{{$ post ['title']}}

Проверьте, получаете ли вы ценность ...

person Rajat Jain    schedule 03.04.2018
comment
Кажется, это не проблема, потому что я получаю эту ошибку: Undefined index: title (View: C: \ xampp \ htdocs \ blog \ resources \ views \ post.blade.php) - person user agent; 04.04.2018
comment
Напоминаю, что он работал, когда я использовал id ... Только после попытки использовать sluggable он запустил ошибку - person user agent; 04.04.2018
comment
Отметьте {{$ post- ›slug}}, он даст вам название - person Rajat Jain; 04.04.2018
comment
Свойство [slug] не существует в этом экземпляре коллекции. (Просмотр: C: \ xampp \ htdocs \ blog \ resources \ views \ post.blade.php) - person user agent; 04.04.2018

Я просмотрел github и затем понял, что ошибка была в get (), который я использовал в контроллере. Поскольку мне нужно только одно значение, я должен использовать вместо него first ().

$post = Post::whereSlug($slug)->first();
person user agent    schedule 04.04.2018