首页 > 解决方案 > 仅获取用户在 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');
    }

标签: mysqllaraveleloquent

解决方案


推荐阅读