laravel - 为什么模型除了 id 不通过 slug 返回数据?
问题描述
当我尝试通过 slug 而不是通过 id 获取数据时,laravel 视图出现问题。这是我的路线:
Route::get('post/{post}','PostController@post')->name('post');
这是 postController 函数:
public function post(post $post)
{
return view('user.post',compact('post'));
}
这是模型函数:
public function grtRouteKeyName()
{
return 'slug';
}
它收到错误 404,但是什么时候在 Route 中进行一些更改:
Route::get('post/{slug}','PostController@post')->name('post');
它返回视图,但不返回我想要的表中的数据。
解决方案
Laravel 的隐式绑定简介
如果/{post}
包含一个 id 并且你的表有 id 列,那么 Laravel 会处理它。
如果您希望模型绑定在检索给定模型类时使用 id 以外的数据库列,您可以覆盖 Eloquent 模型上的 getRouteKeyName 方法:
public function getRouteKeyName()
{
return 'slug'; // db column name
}
在上面的问题中,您需要将方法名称更正grtRouteKeyName
为 getRouteKeyName
拼写,希望它会起作用。
推荐阅读
- c# - Xamarin SimpleAudioPlayer 返回 System.NullReferenceException
- reactjs - 反应状态缺失
- console - spyder 控制台不输出脚本中的值
- android - 为什么底部工作表对话框无法在平板电脑上展开?
- javascript - 检查数组是否包含 id 与 id 列表匹配的对象
- javascript - 在 Vue 中使用带有嵌套对象的 v-for
- python - 针对特定情况实施 SmoothL1Loss
- forward-declaration - 为什么我不能多次声明不同类型的变量或函数?
- python - 使用 pip 将 gdal==2.3.3 安装到 venv 中
- microsoft-dynamics - 检查电源自动化中动态 365 实体的查找值