Php getRouteByKeyName另一个模型laravel 我有两种型号: 类别 范畴转换

Php getRouteByKeyName另一个模型laravel 我有两种型号: 类别 范畴转换,php,laravel,Php,Laravel,在模型类别中,我写道: public function getRouteKeyName(){ return 'alias'; } 列别名位于模型类别转换之下 如何从模型分类转换返回别名 我的代码不起作用 我试着: 在分类转换上添加getRouteKeyName: public function getRouteKeyName(){ return 'alias'; } 并在类别中添加: public function categoryTranslations() { r

在模型类别中,我写道:

public function getRouteKeyName(){
    return 'alias';
}
列别名位于模型类别转换之下
如何从模型分类转换返回别名
我的代码不起作用

我试着:

在分类转换上添加getRouteKeyName:

public function getRouteKeyName(){
    return 'alias';
}
并在类别中添加:

public function categoryTranslations() {
    return $this->hasOne(CategoriesTranslations::class);
}

public function getRouteKeyName() {
    return $this->categoryTranslations->getRouteKeyName();
}

当需要按getRouteKeyName显示类别时,我在null上调用成员函数getRouteKeyName()时出错。如何修复它?

您必须使用类别和类别转换之间的关系

在您的类别模型中:

public function categoriesTranslations()
{
    return $this->hasMany(CategoriesTranslations::class);
}

public function getRouteKeyName()
{
    $this->categoryTranslations->where('locale', Auth::user()->locale)->first()->getRouteKeyName();
}
现在,您可以从Categories模型的任何实例调用
getRouteKeyName()
,它将从CategoriesTranslations表中提取它


**这里潜在的修复方法是添加
where()
语句和
first()
方法。将
Auth::user()->locale
更改为存储要使用的区域设置。

我需要从模型类别中的模型类别Translations返回“alias”。我怎么能做到<代码>返回$category->categoryTranslations->getRouteKeyName()?您能否更清楚地了解这两个模型之间的关系?每个类别是否有多个类别翻译?是的。在分类翻译中,我有多个分类的日期。@Tatata,我已经更新了我的答案一点。看看这对你是否有效。不过,我们仍然需要在这里定义适当的关系。如果是一对一的话,这就行了。如果是一对多的话,这会改变很多事情!那么,您想要第一个相关类别转换的路由键名称吗?想象一下:如果我们调用
$category->categoryTranslations
,我们可能会得到3个返回的categoryTranslations实例。您希望从哪一个获取路由密钥名称?第一个?