2017-05-10 6 views
6

Laravelのいくつかのデータモデルの関係に関するクイッククエリ。morphToとhasManyLaravel

私はユーザーに属する製品を持っていますが、ユーザーは多くの製品を持つことができます。しかし、製品はまた、その製品にオファーをする多くの人々を持つことができます。

class Product extends Model 
{ 
    public function user(){ 
     return $this->belongsTo('App\User'); 
    } 
    public function offer(){ 
     return $this->hasMany('App\Offer'); 
    } 

しかし、製品はまた、例えば、1は車両、または携帯電話、私の移行で異なる列を持つ各かもしれないが、製品の異なるサブタイプを持つことができるので、私は、私は多くの

モーフ必要と仮定します Vehicle.php

public function products() 
{ 
    return $this->morphMany('App\Product', 'imageable'); 
} 
Product.php

public function imageable() 
{ 
    return $this->morphTo(); 
} 

しかし

、呼び出し:

$product = Product::findOrFail($id); 

を私は$product->vehicle

のような何かをしようとしたとき、私は製品のテーブルの上にimageable_idに私のデータベースに車両のIDを追加し、imageable型にnullを取得製品表の「車両」も。

私はここで間違っていますか?

答えて

5

すべてはあなただけimageable経由でアクセスする必要があり、右になりますから、

$product = Product::findOrFail($id); 
return $product->imageable; 

Laravel documentation:またで 多型モデルから多型リレーションの所有者を検索することができる

を実行するメソッドの名前にアクセスして、morphToを呼び出します。

あなたの場合、morphToへの呼び出しを実行するメソッドはイメージ可能です。

+0

それでは、「Class」の車両が見つかりませんでした。 – iLC

+0

どうやってデータをポリモーフィックテーブルに保存していますか?データベースでは、imageable_typeは次のようにする必要があります: 'App \ Vehicle' –

+0

ああ、それはデータベース内のApp \ Vehicleだったのです、ありがとうChase !! (SOが私にできるときに私は正しい印をつけるでしょう) – iLC

関連する問題