php laravel在过去一周内从数据库获取数据

时间:2019-03-23 17:51:59

标签: php mysql arrays laravel

我正在尝试将db中的数据放入单个数组中

这就是我尝试过第一周的所有日期中的foreach循环并每次执行此查询以获取数据的原因

foreach ($list1 as &$day){
           $pleads = \DB::table('leads')
            ->selectRaw('count(*)') 
            ->whereColumn('owned_by_id', 'users.id')
            ->where('lead_source_id', 7)
            ->whereRaw("DATE(created_at) = '$day'");

            $mleads = \DB::table('leads')
                    ->selectRaw('count(*)')
                    ->whereColumn('owned_by_id', 'users.id')
                    ->where('lead_source_id', 3)
                    ->whereRaw("DATE(created_at) = '$day'");

            $aleads = \DB::table('leads')
                    ->selectRaw('count(*)')
                    ->whereColumn('owned_by_id', 'users.id')
                    ->where('lead_source_id', 4)
                    ->whereRaw("DATE(created_at) = '$day'");

            $personalleads = \DB::table('users') 
                    ->where('id', $id) // User ID
                    ->select('users.id')
                    ->selectSub($pleads, 'pleads')
                    ->selectSub($mleads, 'mleads')
                    ->selectSub($aleads, 'aleads')
                    ->get();
                    return $personalleads;
                     }

当我这样做时,我只会得到1个输出:

[{"userid":1,"pleads":2,"mleads":1,"aleads":1}]  

但是我想要的结果是

[{"userid":1,"pleads":2,"mleads":1,"aleads":1},{"userid":1,"pleads":0,"mleads":0,"aleads":0},{"userid":1,"pleads":0,"mleads":0,"aleads":0},{"userid":1,"pleads":1,"mleads":0,"aleads":0},{"userid":1,"pleads":1,"mleads":0,"aleads":0},{"userid":1,"pleads":1,"mleads":0,"aleads":0},{"userid":1,"pleads":0,"mleads":0,"aleads":0}]

但是我认为它们是多个对象,我无法将它们分成单个数组

1 个答案:

答案 0 :(得分:1)

您将在第一次迭代中从循环中返回。而是将结果存储在数组中,然后返回循环之外。

$results = [];
foreach ($list1 as &$day){
    $personalleads = ....
    array_push($results, personalleads);
}
return $results;