-1

私は、多くのレシピ、材料、カテゴリなどがあるオンライン レシピ ブックに取り組んでいます。管理者が関連するレシピを特定のエンティティのオブジェクトに追加できるようにする必要があります (たとえば、カテゴリには多くの関連するレシピがあります。クライアントの希望は手動で追加する必要があります)。また、関連するレシピには順序が必要であり、これも手動で設定されます。したがって、レシピと他の各エンティティ (カテゴリ、材料、レシピなど) との間に多対多の関係が 1 つ必要であり、さらに、関連する各レシピの位置を保存する必要があります。

解決策の 1 つは、関連するレシピを持つエンティティごとにテーブルを設定することです。各行には、エンティティの ID、レシピ ID、および位置が含まれます。これは、相対レシピを持つエンティティと同じ数のテーブルを持つことを意味しますが、これは最善の解決策ではないようです。

別の解決策として、関連するレシピに関するすべての情報を含む 1 つのテーブルを作成し、各行に他のエンティティのタイプを追加で含めることができます。また、私は DRY 原則について非常に厳格であるため、繰り返しコードを記述せずにこれを達成し、可能な限り多くの作業を処理するために Doctrine2+Symfony2 を使用したいと考えています。

可能であれば、多くのコードを記述したりコピーして貼り付けたりすることなく、関連するレシピ機能を新しいエンティティに再利用して追加できるコード (クラスなど) があれば最高です。

これに最適なクラス/データベース設計は何ですか? 私はDoctrine2 + Symfony2を使用しているので、「Doctrineで考える」ようにしてください。

前もって感謝します!

4

1 に答える 1

1

次のテーブルを作成します。

category
--------
id
name

category_recipe
---------------
category_id
recipe_id
display_order (integer)

recipe
------
id
name
instructions

recipe_ingredient
-----------------
recipe_id
display_order (integer)
name
amount
unit

recipe_related
--------------
recipe_id
related_recipe_id
display_order

user_recipe
-----------
user_id
recipe_id
display_order

カテゴリの関係については、参照テーブルに余分な表示順序の値があるため、もう少し作業を行う必要があります。レシピをカテゴリに追加するだけでなく、RecipeCategory オブジェクトを作成し、id 値を設定し、表示順序を設定して、保存する必要があります。Doctrine はこれらのテーブル間の関係を作成することができますが、もう少し手作業が必要です。

それがあなたを正しい道に導くのに役立つことを願っています。

于 2012-04-29T03:24:39.317 に答える