Php 我必须加入6个不同的标签在拉雷维尔使用雄辩

Php 我必须加入6个不同的标签在拉雷维尔使用雄辩,php,laravel,eloquent,eloquent-relationship,Php,Laravel,Eloquent,Eloquent Relationship,我的数据库中有6个不同的表,我必须从所有6个表的列类型、id、标题、创建日期、更新日期、导入、导入url、封面类型、配置文件图像中获取值,并从meetup表的列开始日期和位置中获取一些额外值,作业表中的作业位置和cmp名称以及事件表中的开始日期和位置。我使用的是union()函数,但使用union将不同表中的select语句连接起来并不起作用。我们应该有相同的列数 公共函数wsUserActivity(){ $request=Input::all(); 试一试{ $user_id=$reques

我的数据库中有6个不同的表,我必须从所有6个表的列类型、id、标题、创建日期、更新日期、导入、导入url、封面类型、配置文件图像中获取值,并从meetup表的列开始日期和位置中获取一些额外值,作业表中的作业位置和cmp名称以及事件表中的开始日期和位置。我使用的是union()函数,但使用union将不同表中的select语句连接起来并不起作用。我们应该有相同的列数

公共函数wsUserActivity(){
$request=Input::all();
试一试{
$user_id=$request['user_id'];
$no=isset($request['page\u number'])?$request['page\u number']:0;
$nos=isset($request['count'])?$request['count']:10;
$skp=$no*$nos;
$array\u json\u return=array('status'=>'1','msg'=>'Success');
$u_activity=array();
$u_article=DB::table('mst_article as article')
->选择(DB::raw(‘文章’作为类型’)、‘id’、‘标题’、DB::raw(‘日期’格式(创建时间,“%d%b%Y”)作为创建时间’、DB::raw(‘日期’格式(更新时间,“%d%b%Y”)作为更新时间’、‘导入’、‘导入url’、‘封面类型’、‘配置文件图像’)
->选择raw('description`,1200)作为'description`)
->其中('user\u id\u fk',$user\u id)
->其中('status','=','1');
$u_meetup=DB::table('mst_meetup as meetup')
->选择(DB::raw('meetup'作为类型')、'id'、'title',DB::raw('DATE_格式(创建于,'%d%b%Y')作为创建于')、DB::raw('DATE_格式(更新于,'%d%b%Y')作为更新于')、DB::raw('DATE_格式(开始日期,'%d%b%Y')作为开始日期')、'imported'、'import_url'、'cover_类型、'profile_图像'、'location')
->选择raw('description`,1200)作为'description`)
->其中('user\u id\u fk',$user\u id)
->其中('status','=','1');
$u_question=array();
$u_question=DB::table('mst_question as question')
->选择(DB::raw(‘问题’作为类型’)、‘id’、‘标题’、DB::raw(‘日期’格式(创建时间,“%d%b%Y”)作为创建时间’、DB::raw(‘日期’格式(更新时间,“%d%b%Y”)作为更新时间’、‘导入’、‘导入url’、‘封面类型’、‘配置文件图像’)
->选择raw('description`,1200)作为'description`)
->其中('user\u id\u fk',$user\u id)
->其中('status','=','1');
$u_job=array();
$u\u job=DB::table('mst\u job as job')
->选择(DB::raw(‘作业’作为类型’)、‘id’、‘标题’、DB::raw(‘日期’格式(创建时间,“%d%b%Y”)作为创建时间’、DB::raw(‘日期’格式(更新时间,“%d%b%Y”)作为更新时间’、‘导入’、‘导入url’、‘封面类型’、‘配置文件图像’、‘作业位置’、‘cmp\u名称’)
->选择raw('description`,1200)作为'description`)
->其中('user\u id\u fk',$user\u id)
->其中('status','=','1');
$u_教育=数组();
$u_education=DB::table('mst_education as education')
->选择(DB::raw(‘教育’作为类型’)、‘id’、‘标题’、DB::raw(‘日期’格式(创建时间,“%d%b%Y”)作为创建时间’、DB::raw(‘日期’格式(更新时间,“%d%b%Y”)作为更新时间’、‘导入’、‘导入url’、‘封面类型’、‘配置文件图像’)
->选择raw('description`,1200)作为'description`)
->其中('user\u id\u fk',$user\u id)
->其中('status','=','1');
$u\u activity=DB::table('mst\u事件作为事件')
->选择(DB::raw(‘事件’作为类型’)、‘id’、‘标题’、DB::raw(‘日期’格式(创建日期,“%d%b%Y”)作为创建日期’、DB::raw(‘日期’格式(更新日期,“%d%b%Y”)作为更新日期’、DB::raw(‘日期’格式(开始日期,“%d%b%Y”)作为开始日期)、‘导入’、‘导入url’、‘封面类型’、‘配置文件图像’、‘位置’)
->选择raw('description`,1200)作为'description`)
->其中('user\u id\u fk',$user\u id)
->其中('status','=','1')
->工会(u_文章)
->工会(u_问题)
->工会(u_meetup)
->工会($u_工作)
->工会(u_教育)
->跳过($skp)
->以元计
->get();
如果(计数($u_活动)>0){
foreach($u_活动作为$key=>$value){
如果(!空($value->profile\u image)){
$u_activity[$key]->profile_image_url=config(“feature_pic_url”)。'type_image/thumb/'。$value->profile_image;
}
$u_activity[$key]->post_url=url('/')。/view type'/'.$value->id;
}
}
$array\u json\u return['u\u activity']=$u\u activity;
}捕获(\异常$e){
$array\u json\u return=$this->api\u default\u fail\u response(\u函数\u函数,$e);
}
echo json_encode($array_json_return);
}

我的问题与您的问题相同

保持列不变

  • 类型、id、标题、创建位置、更新位置、导入位置、导入url、封面类型、配置文件图像
然而,你有额外的列,那些需要在一列中包含一些独特的分隔符号,如“,”或“:”任何最适合你的情况

这里有一个例子,你可以作为参考

$u_education = DB::table('mst_education as education')
        ->select('type', 'id', 'title', 'created_at', 'updated_at', 'imported', 'import_url', 'cover_type', 'profile_image',DB::raw('CONCAT("extra_column_1",",","extra_column_2") as extra_col'))
        ->where('user_id_fk',$user_id)
        ->where('status', '=', '1');
        $u_activity= DB::table('mst_event as event')
        ->select('type', 'id', 'title', 'created_at', 'updated_at', 'imported', 'import_url', 'cover_type', 'profile_image',DB::raw('CONCAT("extra_column_1",",","extra_column_2") as extra_col'))
        ->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)
        ->get();
$results = [];
if (sizeof($u_education) > 0)
{
    foreach ($u_education as $key => $value) {
        $results[$key][] = $value->id;
        $extra_col = explode("," , $value->extra_col);
        $results[$key]['extra_column_1'] = $extra_col[0];
        $results[$key]['extra_column_2'] = $extra_col[1];
    }
}
现在,当您得到结果时,通过foreach循环处理它们,并使用我们使用的“分离”来分离这些列

这里有一个例子供参考

$u_education = DB::table('mst_education as education')
        ->select('type', 'id', 'title', 'created_at', 'updated_at', 'imported', 'import_url', 'cover_type', 'profile_image',DB::raw('CONCAT("extra_column_1",",","extra_column_2") as extra_col'))
        ->where('user_id_fk',$user_id)
        ->where('status', '=', '1');
        $u_activity= DB::table('mst_event as event')
        ->select('type', 'id', 'title', 'created_at', 'updated_at', 'imported', 'import_url', 'cover_type', 'profile_image',DB::raw('CONCAT("extra_column_1",",","extra_column_2") as extra_col'))
        ->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)
        ->get();
$results = [];
if (sizeof($u_education) > 0)
{
    foreach ($u_education as $key => $value) {
        $results[$key][] = $value->id;
        $extra_col = explode("," , $value->extra_col);
        $results[$key]['extra_column_1'] = $extra_col[0];
        $results[$key]['extra_column_2'] = $extra_col[1];
    }
}

希望此解决方案对您有效。

您期望的结果是什么?使用收集方法可能比使用sql联合更简单