【发布时间】:2018-12-17 05:07:36
【问题描述】:
我正在尝试获取当前类别的详细信息。 例如,如果路由是 example.com/articles/category-slug
在我的 ArticleCategory 模型中
public function article(){
return $this->hasMany(Article::class);
}
在文章模型中
public function category(){
return $this->belongsTo(ArticleCategory::class, 'category_id');
}
路线
Route::group(['prefix' => 'articles'], function(){
Route::get('/', 'Frontend\ArticleController@index')->name('articles.index');
Route::get('/{articlecategory}', 'Frontend\ArticleController@category');
Route::get('/{articlecategory}/{slug}', 'Frontend\ArticleController@show');
});
文章控制器
public function category(Request $request, ArticleCategory $articlecategory)
{
$category = $articlecategory->id;
$currentcategory = ArticleCategory::where('id', $category)->first();
return $currentcategory;
}
我创建了两个类别,1. 更新 2. 新闻
当我转到 URL example.com/articles/updates 时,我收到一个错误 "Page Not Found"
当我仅在路由文件中更改 {{ articlecategory }} to {{ category }} 时。它显示一个没有当前类别详细信息的空白页面。如何解决?
注意:我之前在 Laravel 5.5 中使用了相同的代码,它运行良好。在 Laravel 5.6 中,我看到了这个错误。我已经在 chrome 上使用了缓存杀手,并且还清除了 laravel 中的缓存和视图,正如谷歌上的几个链接所建议的那样。但是我仍然看到同样的错误
【问题讨论】:
-
因为路由模型绑定是使用
id查找记录, -
你为什么在
category操作中获取相同的ArticleCategory两次。您已经使用 type-hint 获得了$articlecategory对象。 -
所以你的意思是 $currentcategory = $articlecategory;会做的工作。没看懂
-
如果去
example.com/articles/1看到什么 -
注意:当
$currentcategory是$category的 smae 时,为什么要使用查询?
标签: laravel laravel-5.6