RouteServiceProvider 找不到查询

杰森桨

我正在尝试使用大量帖子制作 seo 友好的 url。所以到目前为止我所做的是在我的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();
        });
    }

这在我的 BlogController 中

public function show(Post $post){
    
    return view("blog.show", compact('post'));
}

当我转到http://example.com/slug-from-database帖子时,出现错误

Builder.php 第 426 行中的 ModelNotFoundException:

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

任何想法为什么我会收到此错误?

SI

$slug在你的WHERE条款中遗漏,这里:

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

像这样更改查询,它将起作用:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章