小编Gar*_*One的帖子

Laravel急于加载与自定义查询的嵌套关系

我有代码可以工作,但没有急切加载嵌套关系.

$projects = Project::with('organization')
        ->leftJoin('stages', 'stages.project_id', '=', 'projects.id')
        ->leftJoin('activities', 'activities.stage_id', '=', 'stages.id')
        ->leftJoin('tasks', 'tasks.activity_id', '=', 'activities.id')
        ->select('projects.*',  DB::raw('SUM(IF(tasks.status = 4, score, 0)) AS score'), 
                                DB::raw('SUM(tasks.score) AS total_score'))
        ->groupBy('projects.id')
        ->get();
Run Code Online (Sandbox Code Playgroud)

我想通过急切加载嵌套关系来做到这一点,如果我没有这些自定义选择(total_score和得分),我会做

$projects = Project::with('stages.activities.tasks');
Run Code Online (Sandbox Code Playgroud)

但问题出现在那些自定义选择(得分和total_score)上.我尝试了类似的东西,但没有奏效

$projects = Project::with(['stages', 'activities', 'tasks' => function($q) { 
        $q->select( DB::raw('SUM(IF(tasks.status = 4, score, 0)) AS score'), 
                    DB::raw('SUM(tasks.score) AS total_score')); 
    }])->get();
Run Code Online (Sandbox Code Playgroud)

eager-loading laravel eloquent

1
推荐指数
1
解决办法
1920
查看次数

标签 统计

eager-loading ×1

eloquent ×1

laravel ×1