2016-10-16 17 views
1

私は3つのテーブル、すなわち1.Product 2.Categoryと3.Attributeを持ち、それぞれのカテゴリは異なる属性名を持っています。モバイルにはRAM、Processor.Allの属性名が属性テーブルに保存されています。誰かが属性値を入力したい場合、属性名はユーザーが選択したカテゴリ名に応じてProductテーブルの属性テーブルから取得する必要があります。 3つのテーブルすべてで似ているキーはCategorynameです。Laravel 5:両方のテーブルが2番目のテーブルに接続されている最初のテーブルから3番目のテーブルの列データを表示

public function categories() 
{ 
    return $this->hasMany(Category::class); 
} 

public function attributes() 
{ 
    return $this->hasMany(Attribute::class); 
} 

カテゴリーモデル::

public function products() 
{ 
    return $this->belongsTo(Product::class); 
} 
public function attributes() 
{ 
    return $this->hasMany(Attribute::class); 
} 

属性モデル:

public function categories() 
{ 
return $this->belongsTo(Category::class); 
} 

どのように私は、属性を表示することができます

製品モデルを次のように

関係がありますそのカテゴリに製品を提供し、その後、

foreach($category->attributes as $attribute) 
{ 
    print_r($attribute->name); 
} 

は、選択されたカテゴリ名$name

print_r($category->product->name);ですべての属性名を与えます

答えて

0
$category=Category::where(['name'=>$name])->with('product','attributes')->first(); 

カテゴリー表を経由してProductテーブル内の属性テーブルから名前を付けます。

注:製品に多数のカテゴリがある場合、特定のカテゴリに対して1つの製品のみが存在する場合を除いて、製品とカテゴリの間の関係が多かれいてはなりません。

関連する問題