2016-05-17 6 views
3

私はスラッグでロードブレイクを叩いているので、専門家のアドバイスを求めています。Laravel 5 - Slugの実装

ドライバテーブル、carsテーブル、fleet-ownersテーブルがあります。
は - ドライバーは車
を持っている - 艦隊の所有者は、私は次のようにスラグを作成しようとしています車 を持っているドライバーがあります。私のWebアプリケーションでは

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

を、私はそれぞれの特性を以下のようeloquent-sluggableを使用してスラグを実装しました。私はドライバの場合

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

以下のようにコードはSluggableメソッドを作成する必要があり、ドライバモデルで

は、それがuser.nameを使用し、それぞれのスラグを保存し、それがドライバとカードの両方のための期待どおりに動作します。

艦隊所有者の場合、艦隊所有者はドライバ名がドライバ名として保存されていますが、この名前を参照したり、スラッグを作成することができないため、これを行うことはできません。

+0

fleetownerテーブルから艦隊所有者の名前を取得してwww.example.com/fleet-owners/fleet-owner-nameのスラッグにしたいですか? – ExohJosh

+0

はい、正しいです。 – Prabesh

答えて

1

私はEloquent Sluggableを使用していませんが、データベーススキーマを理解しているかどうかはわかりませんが、Fleet OwnerモデルにDriver Modelインスタンスが1つあることを前提として、

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

そして、フリート所有者のモデルはコードはSluggableはの使用を作ることができるという名前の属性を持っているでしょう:

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

あなたはこのためにあなたの艦隊の所有者のテーブルの上にslugカラムがあることを確認する必要があります働く

+0

私はこれを試してみましょう。私はあなたの選択肢が私が試みることができる別のアプローチを引き起こしたと考えています。私はそれを打つことを許可しなさい。基本的には、私はsluggableメソッド内のname属性をチェックし、適切なフィールドにsave_toを設定することができるはずです。ありがとうジョシュは私にこれを試してみましょう。 – Prabesh

+0

それがどうなるか教えてください! –

+0

私はこの問題を解決することができました。 @ジョシュルンバットあなたのソリューションは働いた。どうもありがとうございました。 – Prabesh

1

私は以下のJoshからの提案で問題を解決することができました。モデルでは、私はメソッドを作成しました

その後、単にbuild_toで '名前'を使用して動作します。