mohamed adel
mohamed adel

Reputation: 715

PHP LaravelMerge data to single array

I am trying to get data from DB into a single array

This what I have tried:

foreach ($userid as &$user){

        foreach ($first_week_of_month as $day){
        //Get Total Number of Personal Leads By User ID & Requested week Through Each Day
        $personalleads = \DB::table('leads') 
        ->where('owned_by_id', $id) // User ID
        ->where('lead_source_id', 7) // 7 = Personal Lead
        ->get(); // Get All Data
        $user->pleads = $personalleads->count();

        //Get Total Number of leads Created by Managers By User ID & Requested week Through Each Day
        $managerleads = \DB::table('leads') 
        ->where('owned_by_id', $id) // User ID
        ->where('lead_source_id', 3) // 3 = Manager Lead
        ->get(); // Get All Data
        $user->mleads = $managerleads->count();

         //Get Total Number of leads Created by Admins By User ID & Requested week Through Each Day
        $adminleads = \DB::table('leads') 
        ->where('owned_by_id', $id) // User ID
        ->where('lead_source_id', 4) // 4 = Admin Lead
        ->get(); // Get All Data
        $user->aleads = $adminleads->count();
        echo ($userid);
        }
    }

What I want:

[  
   {  "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   }
]

What I get:

[ {  "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   } ]
[]

print_r of what I get:

( [items:protected] => Array ([0]=> stdClass Object ([userid]=> 1[pleads]=> 2[mleads]=> 1[aleads]=> 1 )) ) 
( [items:protected] => Array ([0]=> stdClass Object ([userid]=> 1[pleads]=> 0[mleads]=> 0[aleads]=> 0 )) ) 
( [items:protected] => Array ([0]=> stdClass Object ([userid]=> 1[pleads]=> 0[mleads]=> 0[aleads]=> 0 )) ) 
( [items:protected] => Array ([0]=> stdClass Object ([userid]=> 1[pleads]=> 1[mleads]=> 0[aleads]=> 0 )) ) 
( [items:protected] => Array ([0]=> stdClass Object ([userid]=> 1[pleads]=> 1[mleads]=> 0[aleads]=> 0 )) ) 
( [items:protected] => Array ([0]=> stdClass Object ([userid]=> 1[pleads]=> 1[mleads]=> 0[aleads]=> 0 )) ) 
( [items:protected] => Array ([0]=> stdClass Object ([userid]=> 1[pleads]=> 0[mleads]=> 0[aleads]=> 0 )) )

Upvotes: 1

Views: 43

Answers (2)

Isaac Gomes
Isaac Gomes

Reputation: 430

Also, you can try array_merge( array $array1 [, array $... ] )

Upvotes: 0

Vishal Ribdiya
Vishal Ribdiya

Reputation: 880

Take $result = [] before starting forloop and Just add this one line where you are echo $userID

array_push($result, $user);

Upvotes: 2

Related Questions