Laravel 5 - Slug 实现

Laravel 5 - Slug implementation

我遇到了鼻涕虫的障碍,因此寻求您的专家建议。

我们有 drivers table, 汽车 table, fleet-owners table.
- driver有车
- 车队所有者中有 driver 人拥有汽车 我正在尝试按如下方式创建 slug:

www.example.com/drivers/driver-name  
www.example.com/cars/car-name  
www.example.com/fleet-owners/fleet-owner-name

在我的网络应用程序中,我使用 eloquent-sluggable 实现了 slug,如下所示,具有各自的特征。

在 driver 模型中,我创建了一个 sluggable 方法,如下所示

protected $sluggable = [
        'build_from' => 'user.name',
        'save_to'    => 'slug',
    ];

对于 drivers,它使用 user.name 并保存相应的 slug,它对 drivers 和卡片都按预期工作。

但对于舰队所有者,我无法执行此操作,因为对于舰队所有者,driver 的名称存储为 driver 名称,但我无法引用它为此命名或创建 slug。

我没有使用过 Eloquent Sluggable,我不确定我是否理解你的数据库模式,但假设 Fleet Owner 模型有 One/Belongs To a Driver 模型,这样的东西可能会起作用实例.

public function getNameAttribute()
{
    return $this->driver->name;
}

然后 Fleet Owner 模型将具有 Sluggable 可以使用的名称属性:

protected $sluggable = [
        'build_from' => 'name',
        'save_to'    => 'slug',
    ];

您必须确保您的舰队所有者上有一个 slug 列 table 才能正常工作。

我能够根据下面 Josh 的建议解决问题。在模型中我创建了一个方法

public function getNameAttribute()
{
    return $this->driver->name;
}

然后在 sluggable 中只需在 build_to 中使用 'name' 即可。