0

CakePHP での仮想フィールドの使用を実際にカバーする情報を見つけるのに本当に苦労しているようです。はい、CakePHP サイトに公式ドキュメントがあることは知っていますが、個別のテーブルの使用については説明していません。

例えば

表: 製品

ID | PRODUCT | PRICE | QUANTITY
1  | Butter  | 2.50  | 250
2  | Flour   | 6.00  | 16000
3  | Egg     | 0.99  | 6

表: 製品_レシピ

 Product_ID | Recipe_ID | Quantity | COST ("VIRTUAL FIELD")
 1          | 1         | 200      |= SUM (Products.Price/Products.Quantity) * Products_Recipes.Quantity
 2          | 1         | 400
 3          | 1         | 3

表:レシピ

ID | RECIPE | COST ("Virtual Field")
1  | Pastry | Sum of Costs where Recipe_id is 1

Mysqlの初心者ですが、これが私がやるべき方法だと思います。仮想フィールドを使用してこの情報にアクセスするにはどうすればよいですか? あるモデルで動作させることはできますが、他のモデルにアクセスすることはできませんか?

ダグ。

4

1 に答える 1

1

あなたのテーブルは次のようなものだと思います:

  • 製品 (id、製品、価格、数量)
  • Products_Recipes (商品 ID、レシピ ID、数量)
  • レシピ(id、レシピ)

(欠落しているフィールドは、作成しようとしているフィールドです。)

MySQL で作成する方が簡単だと思います。それが機能する場合は、MySQL と CakePHP のどちらが本番環境の実装に適しているかを判断します。(そして、CakePHP の例よりも少し複雑にする必要があります。)

MySQL で実用的なソリューションを作成するには:

products_recipes の選択ビューを作成する

CREATE VIEW vw_recipe_products AS
SELECT products_recipes.product_id, products_recipes.recipe_id, products_recipes.quantity,
,(Products.Price/Products.Quantity) * Products_Recipes.Quantity as COST 
FROM products_recipes
JOIN products
ON products_recipes.product_id = products.product_id

(GROUP BY句は必要ないので、SUM演算子は必要ないと思います)

それではレシピを

CREATE VIEW vw_recipes_with_cost
SELECT recipes.id, recipes.recipe, SUM(vw_recipes_products.cost) as cost
FROM recipes
JOIN vw_recipes_products
ON recipes.id = vw_recipes_products.recipe_id
GROUP BY recipes.id, recipes.recipe

最終的には、GROUP BY 句と中間ビューの使用により、MySQL でソリューションを実装する必要があると思います。(明らかに、他の解決策もありますが、MySQL を利用します。仮想フィールドの CakePHP 実装は、単純な解決策 (2 つのフィールドの連結など) に使用されることがわかりました) {ビューを作成したら、新しいモデルを作成する必要があります。または、代わりにビューを使用するように既存のテーブルの useTable 変数を変更してください。}

于 2013-07-26T11:50:50.817 に答える