#php #mysql #arrays #laravel
#php #mysql #массивы #laravel
Вопрос:
Я пытаюсь получить данные из базы данных в единый массив
Это то, что я пробовал: foreach перебирает все даты дней 1-й недели и каждый раз выполняет этот запрос для получения данных
foreach ($list1 as amp;$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:
Вы возвращаетесь из цикла на первой итерации. Вместо этого сохраните результаты в массиве и возвращайте вне цикла.
$results = [];
foreach ($list1 as amp;$day){
$personalleads = ....
array_push($results, personalleads);
}
return $results;
Комментарии:
1. Большое вам спасибо, но я получаю такой результат ` . [[{«id»:1,»pleads»:2,»mleads»:2,»aleads»:1,»totalLead»:5,»listingOnCRM»:0,»followUpOnCRM»:0,»numberOfDeals»:0,»numberOfSales»:0}],[{«id»:1,»pleads»:0,»mleads»:0,»aleads»:0,»totalLead»:0,»listingOnCRM»:0,»followUpOnCRM»:0,»numberOfDeals»:0,»numberOfSales»:0}] ] ` я не могу разобрать это с помощью jQuery, как объединить их в один массив? Нравится
2. ` [{«id»:1,»pleads»:2,»mleads»:2,»aleads»:1,»totalLead»:5,»listingOnCRM»:0,»followUpOnCRM»:0,»numberOfDeals»:0,»numberOfSales»:0},[{«id»:1,»pleads»:0,»mleads»:0,»aleads»:0,»totalLead»:0,»listingOnCRM»:0,»followUpOnCRM»:0,»numberOfDeals»:0,»numberOfSales»:0}]`