【问题标题】:Laravel 5 - Slug implementationLaravel 5 - Slug 实现
【发布时间】:2016-09-13 02:16:28
【问题描述】:

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

我们有司机表、汽车表、车队所有者表。
- 司机有车
- 车队所有者拥有拥有汽车的司机 我正在尝试按如下方式创建 slug:

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

在我的 web 应用程序中,我使用 eloquent-sluggable 实现了 slug,如下所示。

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

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

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

但对于车队所有者,我无法这样做,因为对于车队所有者,司机的姓名存储为司机姓名,但我无法引用此名称或为此创建 slug。

【问题讨论】:

  • 您是否希望从fleetowner 表中获取车队所有者名称作为www.example.com/fleet-owners/fleet-owner-name 的slug?
  • 是的,没错。

标签: php eloquent laravel-5.1 slug


【解决方案1】:

我没有使用过 Eloquent Sluggable,也不确定我是否理解您的数据库架构,但假设 Fleet Owner 模型有一个/属于一个驱动程序模型实例,这样的事情可能会起作用。

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

那么 Fleet Owner 模型将具有一个名称属性,Sluggable 可以使用:

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

您必须确保您的车队所有者表上有一个 slug 列才能使用。

【讨论】:

  • 让我试一试。我认为您的选择触发了我可以尝试的另一种方法。让我试一试。基本上,我应该能够检查 sluggable 方法中的 name 属性并将 save_to 设置为适当的字段。谢谢乔希让我试试这个。
  • 好的!告诉我进展如何!
  • 我能够解决这个问题。 @Josh Rumbut 您的解决方案有效。非常感谢。
  • 很高兴我能帮助@Prabesh!
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-03-16
    • 2018-08-23
    • 1970-01-01
    • 2016-10-24
    • 2015-06-19
    • 2015-08-31
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多