Laravel 5.5のカテゴリと製品があります 各製品にはカテゴリがあり、カテゴリには親カテゴリがあります。私はカテゴリーのすべての子供の製品を見せたいと思っています。例:服は服飾品であり、シャツ、ジャケットなどのサブカテゴリがあり、衣類カテゴリでクリックすると、シャツまたはジャケットカテゴリを持つすべての商品を表示します。私は "cloth1"、 "cloth2" と "shirt1" の3つの製品を持っている私の場合はLaravel関係で2回返す
public function children()
{
return $this->hasMany('App\Category', 'parent_id');
}
public function products()
{
return $this->hasMany('App\Product');
}
public function getAllProducts()
{
$products = $this->products;
foreach ($this->children as $child) {
foreach ($child->products as $product) {
$products[] = $product;
}
}
return $products;
}
: はここに私のCategory.phpモデルです。 「cloth1」と「cloth2」は衣類カテゴリに属し、「shirt1」は服のサブカテゴリであるシャツカテゴリに属する。だから私は服のカテゴリページにいる時、私はすべての製品(「cloth1」、「cloth2」と「shirt1」)を表示したい しかし、ビューの
{{dd($category->getAllProducts())}}
戻っ「cloth1」、「cloth2」、 "shirt1"、 "shirt1"(2回返します)。どのようなアイデアをなぜ、どのようにこれを修正するには?
EDIT:私は服のカテゴリに$category->products
をしようとすると、それは「cloth1」と「cloth2」を返し、私はシャツのカテゴリにそれをしようとすると、それは
'$ this-> products'と' $ this-> children'に '()'がありませんか? –
いいえ、私はララベルの関係がそのように機能することを知っている限り、ブラケットは、関数が関係を返さない場合にのみ必要です。 – TheAngelM97
あなたは紛らわしいので、 '$ products'にすでに配列が含まれているので、ループの' $ products [] 'に再び同じ値を追加して、おそらく戻り配列を別の名前に変更することができます。ループ中で 'dd()'を試して、何をしているのか見てみましょう。 –