Php 如何通过$u_activity[$key]和$u_activity_event[$key]结果集合并结果集返回

Php 如何通过$u_activity[$key]和$u_activity_event[$key]结果集合并结果集返回,php,laravel,eloquent,Php,Laravel,Eloquent,我有一个表mst\u event,可以从中提取 'id','title', 'created_at', 'updated_at', 'imported', 'import_url', 'cover_type', 'profile_image' 在$u\u活动中和 start_date', 'location' 在$u活动\u事件中 在这里,我希望将$u activity和$u activity\u event返回的结果集组合在一起,也就是说,在这里,我希望得到以下形式的结果:-

我有一个表
mst\u event
,可以从中提取

'id','title', 'created_at', 'updated_at', 'imported', 
'import_url', 'cover_type', 'profile_image' 
$u\u活动中

start_date', 'location' 
$u活动\u事件中

在这里,我希望将
$u activity
$u activity\u event
返回的结果集组合在一起,也就是说,在这里,我希望得到以下形式的结果:-

        "type": "event",
        "id": "999999",
        "title": "EVENT TITLE",
        "created_at": "22 Oct 2019",
        "updated_at": "22 Oct 2019",
        "imported": "0",
        "import_url": null,
        "cover_type": 0,
        "profile_image": "",
        "description": "",
        "post_url": "http://localhost:8100/view-event/999999"
        "start_date": "12 Nov 2019",
        "location" : "Bangalore"
这是我的密码:-

public function wsUserActivity(){
    $request = Input::all();
    //try {
        $user_id = $request['user_id'];
        $no=isset($request['page_number'])?$request['page_number']:0;
        $nos=isset($request['count'])?$request['count']:10;
        $skp=$no*$nos;
        $array_json_return = array('status' => '1','msg' => 'Success');


        $u_activity = array();
        $u_article = DB::table('mst_article as article')
        ->select(DB::raw('"article" as type'),'id','title',  'created_at',  'updated_at', 'imported', 'import_url', 'cover_type', 'profile_image')
        ->selectRaw('SUBSTRING(`description`, 1, 200) as `description`')
        ->where('user_id_fk',$user_id)
        ->where('status', '=', '1');




        $u_meetup = DB::table('mst_meetup as meetup')
        ->select(DB::raw('"meetup" as type'),'id','title', 'created_at', 'updated_at', 'imported', 'import_url', 'cover_type', 'profile_image' )
        ->selectRaw('SUBSTRING(`description`, 1, 200) as `description`')
        ->where('user_id_fk',$user_id)
        ->where('status', '=', '1');



        $u_question = array();
        $u_question = DB::table('mst_question as question')
        ->select(DB::raw('"question" as type'),'id','title', 'created_at', 'updated_at', 'imported', 'import_url', 'cover_type', 'profile_image')
        ->selectRaw('SUBSTRING(`description`, 1, 200) as `description`')
        ->where('user_id_fk',$user_id)
        ->where('status', '=', '1');


        $u_job = array();
        $u_job = DB::table('mst_job as job')
        ->select(DB::raw('"job" as type'),'id','title','created_at',  'updated_at', 'imported', 'import_url', 'cover_type', 'profile_image')
        ->selectRaw('SUBSTRING(`description`, 1, 200) as `description`')
        ->where('user_id_fk',$user_id)
        ->where('status', '=', '1');



        $u_education = array();
        $u_education = DB::table('mst_education as education')
        ->select(DB::raw('"education" as type'),'id','title',  'created_at', DB::raw('DATE_FORMAT(updated_at, "%d %b %Y") as updated_at'), 'imported', 'import_url', 'cover_type', 'profile_image')
        ->selectRaw('SUBSTRING(`description`, 1, 200) as `description`')
        ->where('user_id_fk',$user_id)
        ->where('status', '=', '1');

        $count_article = ArticleModel::where('user_id_fk', $user_id)->where('status', '1')->count();
        $count_meetup = meetup_model::where('user_id_fk', $user_id)->where ('status', '1')->count();
        $count_question = QuestionModel::where('user_id_fk', $user_id)->where('status', '1')->count();
        $count_job = JobModel::where('user_id_fk', $user_id)->where('status', '1')->count();
        $count_education = education_model::where('user_id_fk', $user_id)->where('status', '1')->count();
        $count_event = Event::where('user_id_fk', $user_id)->where('status', '1')->count();
        $u_activity_count = $count_article + $count_meetup + $count_question + $count_job + $count_education + $count_event;

        $u_activity= DB::table('mst_event as event')
        ->select(DB::raw('"event" as type'),'id','title',  'created_at',  'updated_at', 'imported', 'import_url', 'cover_type', 'profile_image' )
        ->selectRaw('SUBSTRING(`description`, 1, 200) as `description`')
        ->where('user_id_fk',$user_id)
        ->where('status', '=', '1')
        ->union($u_article)->union($u_question)->union($u_meetup)->union($u_job)->union($u_education)
        ->skip($skp)
        ->take($nos)
        ->latest()
        ->get();

        if (count($u_activity)>0){
            foreach ($u_activity as $key => $value){
                $u_activity[$key]->created_at = DATE_FORMAT(new \DateTime($value->created_at), "d M Y");
                $u_activity[$key]->updated_at = DATE_FORMAT(new \DateTime($value->updated_at), "d M Y");
                $u_activity[$key]->description = strip_tags($value->description);
                $cover_type = $value->cover_type;
                if($cover_type==0 || $cover_type==1){
                if (!empty($value->profile_image))
                $u_activity[$key]->profile_image = config("feature_pic_url").$value->type.'_image/thumb/'.$value->profile_image;
                }else {
                $u_activity[$key]->profile_image = $value->profile_image;
                }
                $u_activity[$key]->post_url = url('/') . '/view-'.$value->type.  '/' . $value->id;
                (if($value->type=='event')
                {
                $id_event=$u_activity[$key]->id;
                $u_activity_event[$key]=DB::table('mst_event as event')
                ->select(DB::raw('DATE_FORMAT(start_date, "%d %b %Y") as start_date'), 'location')
                ->where('id', $id_event)
                ->get();
                }
                elseif($value->type=='job')
                {
                $id_job=$u_activity[$key]->id;
                $u_activity_job[$key]=DB::table('mst_job as job')
                ->select('cmp_name as company name','job_location')
                ->where('id', $id_job)
                ->get();
                }
            }
        }
        foreach ($u_activity as $key => $value){
            if($value->type=='event'){
                $u_activity[$key]=$u_activity[$key]+$u_activity_event[$key];
            }
        }



        $array_json_return['u_activity'] = $u_activity;
        $array_json_return['count'] = $u_activity_count;


    /*} catch (\Exception $e) {
        $array_json_return = $this->api_default_fail_response(__function__, $e);
    }*/

    echo json_encode($array_json_return);
}

不管使用哪种语言,总体思路都是构建结果集对象

function make_u_result_set($u_activity, $u_activity_event){
    $result = array();
    foreach ($u_activity as $key => $value){ 
        array_push($result, $key => $value);
    } 

    foreach ($u_activity_event as $key => $value){ 
        array_push($result, $key => $value);
    } 

    return $result

}
更好

function add_data_to_array($array_to_add_data_to, $array_to_get_data_from){
    foreach ($array_to_get_data_from as $key => $value){ 
        array_push($array_to_add_data_to, $key => $value);
    } 
    return $array_to_add_data_to
}
$result = array_merge($u_activity,$u_activity_event);
那你就可以了

$result = array();
add_data_to_array($result, $u_activity);
add_data_to_array($result, $u_activity_event);
//echo json_encode($result);
更好

function add_data_to_array($array_to_add_data_to, $array_to_get_data_from){
    foreach ($array_to_get_data_from as $key => $value){ 
        array_push($array_to_add_data_to, $key => $value);
    } 
    return $array_to_add_data_to
}
$result = array_merge($u_activity,$u_activity_event);
试验