Tuesday, March 7, 2017

RouteServiceProvider can't find query

I'm trying to make seo friendly url with slugs of post. So what I have made so far is this in my RouteServiceProvider

namespace App\Providers;

use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use App\Post;

class RouteServiceProvider extends ServiceProvider
{
    /**
     * This namespace is applied to your controller routes.
     *
     * In addition, it is set as the URL generator's root namespace.
     *
     * @var string
     */
    protected $namespace = 'App\Http\Controllers';

    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @return void
     */
    public function boot()
    {

        parent::boot();

        Route::bind('post', function($slug){ 
            return Post::published()->where('slug')->first();
        });
    }

This in my BlogController

public function show(Post $post){

    return view("blog.show", compact('post'));
}

When I go to the post http://example.com/slug-from-database I've got the error

ModelNotFoundException in Builder.php line 426:

No query results for model [App\Post].

Any ideas why I get this error?



via Jason Paddle

Advertisement