我正在使用 Laravel 8 制定饮食计划。
数据库看起来像这样:
食谱 | 类别 | 卡路里 |
---|---|---|
苹果派 | 零食 | 第289章 |
香蕉派 | 零食 | 第386章 |
番茄意大利面 | 午餐 | 第712章 |
鸡肉沙拉 | 午餐 | 第756章 |
蔬菜汤 | 晚餐 | 410 |
鱼配土豆 | 晚餐 | 第652章 |
我想根据每日卡路里显示当天的膳食。
例如,如果我每天的热量是1500kcal,我想要当天的3份食谱(午餐/晚餐/零食),其总热量不超过1500kcal。
我知道我可以显示不超过一定卡路里数的膳食:
$recipes = Recipe::where('category', 'snacks')
->where('calories', '<', '300')
->get()
;
但是如何从不同类别中随机获得3种不超过1500kcal的不同膳食呢?
我希望我已经说清楚了
检索每个膳食类别(零食、午餐、晚餐)的所有食谱。计算每个膳食类别的所有可能的食谱组合。过滤总卡路里不超过每日卡路里限制的组合。从每个膳食类别中选择一种组合以形成每日膳食计划。
此代码将生成每日膳食计划,其中包含每个膳食类别(零食、午餐、晚餐)的食谱,其中总卡路里不超过指定的每日卡路里限制。如果膳食类别没有有效的组合,它会选择该类别卡路里最高的单一食谱。
您应该首先给您的每日卡路里设定一个阈值,然后当查询找到随机食谱时,您应该根据该食谱所含的卡路里数来减少剩余的卡路里。对每个类别执行此操作。