问题描述
有人对如何使用 Laravel routeKeyName 的 slug 解决问题有一些想法吗?
我有一个使用列 [slug] 进行路由的模型(幻灯片)。设置如下:
public function getRouteKeyName() {
return 'slug';
}
同一模型还使用引导功能从相关类别表/模型中获取其他一些相关列。
protected static function boot() {
parent::boot();
static::addGlobalScope('content_type',function (Builder $builder) {
$builder->where('content_types.name','Slide')
->join('content_categories','content.id','=','content_categories.content_id')
->join('categories','categories.id','content_categories.category_id')
->select('content.*','categories.name as category','categories.id as category_id');
});
}
问题是类别表也有一个 [slug] 列,这意味着 Laravel 的内置 RouteKeyName 功能在为我的编辑路由构建 sql 时会发送“不明确的列名”警告。
不明确的列名“slug”。 (sql: select top 1 [content].*,[categories].[name] as [category],[categories].[id] as [category_id] from [content]inner join [content_types] on [content].[ content_type_id] = [content_types].[id] [content] 上的 [content_categories] 内连接。[id] = [content_categories].[content_id] [categories] 上的内连接 [categories].[id] = [content_categories].[ category_id] 其中 [slug] = when-to-decant--33 和 [content].[deleted_at] 为 null 且 [content_types].[name] = Slide)
我尝试修改 getRouteKeyName 方法以消除歧义:
public function getRouteKeyName() {
return 'content.slug';
}
这消除了模棱两可的列警告,但引发了一个关于缺少所需路由参数的新错误。
缺少 [Route: slide.show] [URI: slides/show/{item}] 的必需参数
我可能只是被卡住了,不得不处理我的 Slide 类别的关系,而不是 join 和 select 方法,但我想我会看看 stackoverflow 上是否有人解决了这个问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)