laravel - Laravel 条件路由键使用 getRouteKeyName
问题描述
我在表上的主键是id
,另一方面,我有一个名称为的列,slug
它可以为空,我想通过slug
填充 slug 列而不是 null来设置模型的路由键,否则将其保留为id
,我尝试了这些:
public function getRouteKeyName()
{
if ($this->slug) return 'slug';
return 'id';
}
问题是$this
仅返回该方法上的模型实例,并且不会返回请求中涉及的当前模型,我也尝试过request()->route('post')
但没有奏效。
解决方案
这可能不是最好的方法,但我会这样做:
路线:
Route::get('/somepath/{variable}', 'SomeController@index');
控制器:
public function index($variable)
{
$model = Model::where('slug', $variable)->first();
if (null === $model) {
$model = Model::where('id', $variable)->first();
}
// other logic
}
推荐阅读
- python-3.x - 使用 Python 更改 .XLSM 文件中的变量,运行宏并将其保存到另一个文件中
- node.js - util.promisify 将使用回调的异步函数转换为 Promises。为什么它不适用于遵循该格式的 AWS S3.upload?
- semantics - c语言和其他编程语言中求值的含义
- authentication - Blazor WASM .NET Core Hosted .NET5: Missing ClientId: Can't get Google authentication work as per the example for Google Authentication
- python - GridSearchCV 调整超参数错误:必须始终传递“Layer.call”的第一个参数
- javascript - 对 if else 语句做出过多的重新渲染反应
- html - Javaservlet 连接
- python - 使用指定索引重塑数组
- amazon-web-services - 为什么我的事件桥规则不执行我的 Lambda 函数?
- load-balancing - 防止单个客户过载的内容负载均衡器