首页 > 解决方案 > 将复杂的 Pivot SQL 查询转换为 Laravel Eloquent 关系

问题描述

我对您在下面看到的模式的提取有疑问:

示例 SQL 架构

如您所见,有一些通过数据透视表tasks连接。数据透视表有一个枚举列,其中包含可能的值和。filestask_filesioinputoutput

我想创建一个可急切加载的 Laravel Eloquent 关系,它返回任务的依赖任务。我想现有的关系类型不足以进行这种查询。至少我不知道如何,因此很高兴得到任何帮助。

我有一个有效的 SQL 原始查询,它基本上可以使用子查询。请注意,实际应用程序需要一些约束(例如软删除)。

SELECT 
    *
FROM
    wecreateyour.tasks
WHERE
    id IN (SELECT 
            inputs.task_id
        FROM
            wecreateyour.task_files AS inputs
        WHERE
            inputs.io = 'input'
                AND inputs.file_id IN (SELECT 
                    outputs.file_id
                FROM
                    wecreateyour.task_files AS outputs
                WHERE
                    outputs.io = 'output'
                        AND outputs.file_id = inputs.file_id
                        AND outputs.task_id IN (?)));

标签: sqllaraveleloquentrelationshipquery-builder

解决方案


推荐阅读