2017-10-17 7 views
0

私は2つのテーブル間に多対多の関係を持っています。 categories and products tables、ピボットテーブルはcategory_productです。識別子に基づいて行を数える - Laravel

私のカテゴリテーブルには、そのカテゴリの下にある製品の数を保持する属性no_of_productsがあります(カテゴリの下に製品を追加する前にカテゴリを作成するため)。

カテゴリの商品を保存した後にno_of_productsを更新するにはどうすればよいですか?これは私が試みたものですが、私は混乱しています。

私はリレーションが挿入されているピボットテーブルから数える必要がありますか?

私はデータベースとlaravelで初心者です。あなたは、総製品を保管する必要はありません

ProductsController

public function store(Request $request) 
    { 
     $product = new Product(array(
       'name' => $request->get('name'), 
      )); 

       $product->save(); 
       $product->saveProduct($request->get('category')); 

       $count_product = Product::count();    

      } 
+0

のカテゴリの製品の合計数を与える

protected $withCount = ['products']; 

:あなたは、単にこのようなあなたのApp\Categoryモデルで$withCountプロパティを更新することができます。クエリの結合を使用して、カテゴリ内の製品数をGROUP BY句で動的に計算できます。 –

+0

クエリビルダでも雄弁を使用できますか? –

+0

データベース内の不要なクエリを防ぐことができるので、変数に合計レコードを格納することをお勧めします。 悪い: 'foreach($ product-> count()as $ product){// ...}' より良い: '$ productsCount = $ product-> count; foreach($ productsCount as $ product){...} ' –

答えて

1

は、データベースにカウントされます。その数を保管しないでください。これは、自動的にプロパティを介して、あなたに$category->products_count

+0

ここで 'products_count'からどうぞ? –

+0

モデルファイルにこのプロパティを設定するだけです。 'app/Category.php' –

関連する問題