私は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();
}
のカテゴリの製品の合計数を与える
:あなたは、単にこのようなあなたの
App\Category
モデルで$withCount
プロパティを更新することができます。クエリの結合を使用して、カテゴリ内の製品数をGROUP BY句で動的に計算できます。 –クエリビルダでも雄弁を使用できますか? –
データベース内の不要なクエリを防ぐことができるので、変数に合計レコードを格納することをお勧めします。 悪い: 'foreach($ product-> count()as $ product){// ...}' より良い: '$ productsCount = $ product-> count; foreach($ productsCount as $ product){...} ' –