ホームページ  >  記事  >  バックエンド開発  >  Laravelの複数テーブルの関連付けクエリの問題

Laravelの複数テーブルの関連付けクエリの問題

WBOY
WBOYオリジナル
2016-08-27 09:06:521638ブラウズ

3 つの mysql データ テーブル

  • 商品リスト(製品)

  • パッケージ

  • パッケージ情報テーブル (package_data)。

製品テーブルの主なフィールド:

  • id(自己増分ID)

  • 名前

  • ...

パッケージテーブルの主なフィールド:

  • id(自己増分ID)

  • タイトル(パッケージ名)

  • ....

パッケージ情報テーブルの主なフィールド:

  • id(自己増分ID)

  • product_id (製品ID)

  • package-id(パッケージID)

  • product_num (製品数)

  • ...

簡単な手順:

パッケージ内に複数の商品が含まれているため、パッケージ テーブルとパッケージ情報テーブルを 1 つのテーブルに配置することもできましたが、冗長なデータを削減するために、パッケージ テーブルは単純に垂直に分割されました。

ここで質問です:-)

  • 上記の状況で、パッケージ A に製品 A がいくつ含まれているかを知りたいです。では、モデル内の関係をどのように定義すればよいでしょうか?

  • 上記の状況で、パッケージAとパッケージBで製品A、製品Bなどがいくつ使用されているかを知りたいのですが、どうすればよいでしょうか?

追伸:上記の質問は公式文書に目を通しましたが、私のIQが低すぎて理解が曖昧なため、ここで助けを求めました。

熱いご指導をお待ちしております^_^

返信内容:

3 つの mysql データ テーブル

  • 商品リスト(製品)

  • パッケージ

  • パッケージ情報テーブル (package_data)。

製品テーブルの主なフィールド:

  • id(自己増分ID)

  • 名前

  • ...

パッケージテーブルの主なフィールド:

  • id(自己増分ID)

  • タイトル(パッケージ名)

  • ....

パッケージ情報テーブルの主なフィールド:

  • id(自己増分ID)

  • product_id (製品ID)

  • package-id(パッケージID)

  • product_num (製品数)

  • ...

簡単な手順:

パッケージ内に複数の商品が含まれているため、パッケージ テーブルとパッケージ情報テーブルを 1 つのテーブルに配置することもできましたが、冗長なデータを削減するために、パッケージ テーブルは単純に垂直に分割されました。

ここで質問です:-)

  • 上記の状況で、パッケージ A に製品 A がいくつ含まれているかを知りたいです。では、モデル内の関係をどのように定義すればよいでしょうか?

  • 上記の状況で、パッケージAとパッケージBで製品A、製品Bなどがいくつ使用されているかを知りたいのですが、どうすればよいでしょうか?

追伸:上記の質問は公式文書に目を通しましたが、私のIQが低すぎて理解が曖昧なため、ここで助けを求めました。

熱いご指導をお待ちしております^_^

へぇ~、ついに文書で答えを見つけました。ここにリンクしてください。 「ネストされた熱心な読み込み」セクションを検索して、ご自身でご覧ください。

具体的なプロセスを教えてください:

hasManyData() メソッドはパッケージ モデルで定義されています

リーリー

BelongsToProduct() メソッドは package_data モデルで定義されています

リーリー

コントローラーで使用:

リーリー

完了!

別の解決策

追記: 同僚が教えてくれた方法はおおよそ次のような擬似コードです:

リーリー

パフォーマンスはひどいと思うよ~もう勉強したくない!ちょっと頭が熱いので、ちょっと乱雑な書き方になってしまいましたが、間違っていたらご指摘ください。この号を見てくださった皆様、ありがとうございました~

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。