gpt4 book ai didi

php - 使用 CakePHP 3/MySQL 处理食谱和配料

转载 作者:行者123 更新时间:2023-11-28 23:33:25 25 4
gpt4 key购买 nike

我发了一篇关于食谱和配料的帖子,但不幸的是我的帖子不够清楚,所以我试着在这一篇中说得更清楚。

我有两个 SQL 表:

PRODUCTS (id, code, name)
RECIPES (product_id, ingredient_id, qty)

product_id 和 ingredient_id 都是表 PRODUCTS 的 ID。 “最终”产品可以由子产品组合而成。

我想在一个 View 中用 TreeView 显示制作食谱所需的所有食谱。

我会做一个例子,为此,我们可以有一个这样的数据库提取:

PRODUCTS (id is auto_increment)

code | name |
________|________________|
A | Product A |
A1 | Product A1 |
A2 | Product A2 |
A21 | Product A21 |
A22 | Product A22 |
A3 | Product A3 |

RECIPES

product_id | ingredient_id | qty |
_____________|_______________|_____|
A | A1 | 5 |
A | A2 | 9 |
A | A3 | 11 |
A2 | A21 | 2 |
A2 | A22 | 3 |

例如,要制作 10 个产品 A,我想显示这个:

Product A - 10
--> Product A1 - 50 (5*10)
--> Product A2 - 90 (9*10)
------> Product A21 - 180 (2*(9*10))
------> Product A22 - 270 (3*(9*10))
--> Product A3 - 110 (11*10)

我可以只显示成分列表(A1、A2、A3),​​但我无法显示产品 A2 的所有子配方,如 A21 和 A22。

我在我的 Controller 中这样做:

$ingredients[] = [$codeProduct=> $this->Recipes->getListOfIngredients($codeProduct)];

getListOfIngredients 函数:

public function getListOfIngredients($code = null){
if ($code <> null){
$ingredients = $recipes->find('all', ['conditions' => ['Recipes.product_id = ' => $code]]);
return $ingredients->toArray();
}
}

使用该代码,$ingredients[] 包含产品的所有成分,但如何添加所有子配方?

感谢您的帮助。

最佳答案

使用下面的查询,您将获得Product A 的所有记录。

Select * from RECIPES r inner join  RECIPES r1 on r.ingredient_id = r1.product_id and r.product_id = 'A'

然后您必须循环该数组以生成树结构。

关于php - 使用 CakePHP 3/MySQL 处理食谱和配料,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36598038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com