Php Laravel 5-Slug实现

Php Laravel 5-Slug实现,php,eloquent,laravel-5.1,slug,Php,Eloquent,Laravel 5.1,Slug,我用slug遇到了一个路障,因此寻求您的专家建议 我们有司机表、汽车表、车队所有者表。 -司机有车 -车队所有者有拥有汽车的司机 我正在尝试创建slug,如下所示: www.example.com/drivers/driver-name www.example.com/cars/car-name www.example.com/fleet-owners/fleet-owner-name 在我的webapp中,我使用以下方法实现了slug,并分别使用了trait 在驱动程序模型中,我创建

我用slug遇到了一个路障,因此寻求您的专家建议

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

www.example.com/drivers/driver-name  
www.example.com/cars/car-name  
www.example.com/fleet-owners/fleet-owner-name
在我的webapp中,我使用以下方法实现了slug,并分别使用了trait

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

protected $sluggable = [
        'build_from' => 'user.name',
        'save_to'    => 'slug',
    ];
对于驱动程序,它使用user.name并保存相应的slug,它对驱动程序和卡都能正常工作


但对于车队所有者,我无法做到这一点,因为对于车队所有者,驱动程序的名称存储为驱动程序名称,但我无法引用此名称或为此创建slug。

我没有使用雄辩的Sluggable,也不确定我是否理解您的数据库架构,但可能类似的东西可以工作,假设车队所有者模型有一个/属于驾驶员模型实例

public function getNameAttribute()
{
    return $this->driver->name;
}
然后,车队所有者模型将具有Sluggable可以利用的名称属性:

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

您必须确保在您的车队所有者表中有一个slug列,以使其正常工作。

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

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

然后在sluggable中,只需在build_to中使用“name”即可

您想从fleetowner表中获取车队所有者名称作为www.example.com/fleet owner/fleet owner name的slug吗?是的,这是正确的。让我尝试一下。我想你的选择触发了另一种我可以尝试的方法。让我试一试。基本上,我应该能够检查sluggable方法中的name属性,并将save_设置为适当的字段。谢谢,乔希,让我试试。好的!让我知道进展如何!我能够解决这个问题@Josh Rum但你的解决方案奏效了。非常感谢。很高兴我能帮助@Prabesh!