在laravel中编写查询join sum groupby

时间:2016-09-07 11:45:27

标签: laravel join sum


请帮我写一下查询 我有2个表:“项目”和“债务”
“债务”表有

id | project_id | currency_list | total
1  | 1          | 1             | 1000
2  | 1          | 2             | 500
3  | 2          | 1             | 1000
4  | 2          | 2             | 500
...

我需要编写查询以从项目中获取1000行,并将所有“total”与group by“currency_list”相加

非常感谢:)

2 个答案:

答案 0 :(得分:3)

嘿,我试过你的希望工作:) 首先你应该有桌子的两个模型 在您的项目模型中调用

    public function debts(){
      return $this->hasMany('App\Debt','project_id')->selectRaw('debts.*,sum(total) as sum')->groupBy('currency_list');
   }

并在您的控制器中调用它

$projects = Project::with('debts')->get()->toArray();

dd($ projects)检查为数组

编辑:在控制器功能中使用它

$projects = DB::table('projects')
            ->join('debts', 'projects.id', '=', 'debts.projects_id')
            ->select('projects.*','debts.*', DB::raw('sum(total) as sum'))
            ->groupBy('currency_list')
            ->get();

然后在您的视图中使用

@foreach($projects as $project)
{
{{$project->sum}}
}

答案 1 :(得分:0)

你可以试试这个

应用/项目

public function getDebts()
{
    return $this->hasMany('App\Debt');
}

控制器

use App\Project;

public function getProjects(Project $project ) 
{        
    $all =  $project->with(['getDebts'=>function($query){
                $query->selectRaw('*,sum(total) as sum')
                      ->groupBy('currency_list');
            }])->take(1000);
}