RouteServiceProvider 找不到查询
RouteServiceProvider can't find query
我正在尝试使用 post 的 slug 使 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'));
}
当我转到 post http://example.com/slug-from-database 时出现错误
ModelNotFoundException in Builder.php line 426:
No query results for model [App\Post].
知道我为什么会收到此错误吗?
您的 WHERE
子句中缺少 $slug
,此处:
Route::bind('post', function($slug){
return Post::published()->where('slug')->first();
});
像这样更改查询,它将起作用:
Post::published()->where('slug', $slug)->first();
我正在尝试使用 post 的 slug 使 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'));
}
当我转到 post http://example.com/slug-from-database 时出现错误
ModelNotFoundException in Builder.php line 426:
No query results for model [App\Post].
知道我为什么会收到此错误吗?
您的 WHERE
子句中缺少 $slug
,此处:
Route::bind('post', function($slug){
return Post::published()->where('slug')->first();
});
像这样更改查询,它将起作用:
Post::published()->where('slug', $slug)->first();