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);
试验