Php RouteServiceProvider可以';找不到查询

Php RouteServiceProvider可以';找不到查询,php,laravel,laravel-5,laravel-5.4,Php,Laravel,Laravel 5,Laravel 5.4,我正试图使搜索引擎优化友好的网址与后段。到目前为止,我在我的RouteServiceProvider namespace App\Providers; use Illuminate\Support\Facades\Route; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; use App\Post; class RouteServiceProvider extends

我正试图使搜索引擎优化友好的网址与后段。到目前为止,我在我的
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();
        });
    }
这是我的博客控制器

public function show(Post $post){
    
    return view("blog.show", compact('post'));
}
当我去邮局时,我发现了错误

Builder.php第426行中的ModelNotFoundException:

没有模型[App\Post]的查询结果


知道我为什么会出现此错误吗?

您的
WHERE
子句中缺少
$slug
,如下所示:

Route::bind('post', function($slug){ 
    return Post::published()->where('slug')->first();
});
像这样更改查询,它将工作:

Post::published()->where('slug', $slug)->first();

只是想检查一下,您是否有一个名为
Post
的模型,名称空间为
App\Post
?是的,我有。我也可以发布它,但我不认为这件事与这里的问题有关。我注意到您正在您的服务提供商中指定一个名称空间。这可能是为了在
App\Http\Controllers\post
中查找您的
post
模型吗?。如果没有更多的错误输出,就有点难说了。这个
protected$namespace='App\Http\Controllers'有点长
是安装laravel后的默认文件。我没有添加它。如果我删除这一行,我就会出现错误,无法找到控制器。