mysql - 仅获取用户在 Laravel Eloquent 或 MySQL 中拥有成分的食谱
问题描述
我有以下表格:
食谱
ID | 姓名 | 描述 | 等级 | 时间 |
---|---|---|---|---|
1 | 烩饭 | 描述.. | 4 | 90 |
用户
ID | 姓名 | 电子邮件 |
---|---|---|
1 | 克里斯蒂安 | 电子邮件@gmail.com |
配料
ID | 姓名 |
---|---|
1 | 盐 |
茶水间(数据透视表)
用户身份 | 成分ID | 数量 |
---|---|---|
1 | 1 | 4 |
成分配方(数据透视表)
recipe_id | 成分ID | 数量 |
---|---|---|
1 | 1 | 4 |
我正在尝试获取用户拥有成分的所有食谱。
用户有配料(餐具室 == 数据透视表)。食谱也有成分(ingredient_recipe == 数据透视表)。我需要匹配成分食谱和食品储藏室,以仅显示用户可以烹饪的食谱。
表图片
我一直在尝试创建视图和 sql 查询,但是可以使用 Eloquent 来实现吗?
我尝试在集合中使用 contains 但它应该是相同的模型,所以它不起作用。
这是我的模型:
食谱:
public function ingredients(): BelongsToMany
{
return $this->belongsToMany(Ingredient::class)->withPivot('quantity');
}
成分:
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function users(): BelongsToMany
{
return $this->belongsToMany(User::class, 'pantries')->withPivot('quantity');
}
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function magnitude(): BelongsTo
{
return $this->belongsTo(Magnitude::class);
}
public function recipes(): BelongsToMany
{
return $this->belongsToMany(Recipe::class)->withPivot('quantity');
}
用户:
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function pantries(): BelongsToMany
{
return $this->belongsToMany(Ingredient::class, 'pantries')->withPivot('quantity');
}
解决方案
推荐阅读
- vue.js - 是否总是需要在数据中声明属性:{ }
- reactjs - 在 react-hook-forms 表单中动态添加或删除项目并注册输入?
- r - 如何根据开始和结束日期计算季度下降的观察次数?
- pyspark - 在groupBy之后按另一列的最大值查询一列
- reactjs - npx react-native run-windows 在 CPP 构建阶段失败
- java - IntelliJ IDEA 中的通配符导入
- flutter - 如何将通过 Timer.periodic 从 API 检索到的数据集成到 Flutter Cubit 项目中
- python - 获取容器的所有 pod,将它们存储在文本文件中,然后在单个命令中将这些文件用作 args
- javascript - Laravel 8 和 PHP:使用 Google Cloud Speech to Text API
- mariadb - Debezium MySQL schema_only 快照模式语义