首页 > 解决方案 > 如何使用多个参数创建“yajra/laravel-datatables”?

问题描述

如何从多个数据源创建“yajra/laravel-datatables”?在这里,我想显示来自不同数据库的多个表。

 $data1  = DB::table('schema1.post AS p')
                        ->leftJoin('user AS u','u.id','=','p.user_id')
                        ->select('p.*','u.*')
                        ->get();   
 $data2  = DB::table('schema2.page AS page')
                        ->leftJoin('user AS u','u.id','=','page.user_id')
                        ->select('page.*','u.*')
                        ->get();   

  return Datatables::of($data)
            ->addIndexColumn()
            ->make(true);  

在这里,我对如何将 2 个变量传递给 Datatables 感到困惑?这是我的脚本。

var option = $("#Options").DataTable({
      processing: true,
      serverSide: false,
      ajax: "{{route('option')}}",
      columns: [
        {
          data: "user_name",
          name: "user_name",
        },
        {
          data: "type",
          name: "type",
        },
        {
          data: "description",
          name: "description",

        },
       });

标签: laravelyajra-datatable

解决方案


你可以使用 Eloquent 的 ->union() 方法:

 $data1  = DB::table('schema1.post AS p')
                        ->leftJoin('user AS u','u.id','=','p.user_id')
                        ->select('p.*','u.*')
                        ->get();   
 $data2  = DB::table('schema2.page AS page')
                        ->leftJoin('user AS u','u.id','=','page.user_id')
                        ->select('page.*','u.*')
                        ->union($data1)
                        ->get();  

return Datatables::of($data2)
            ->addIndexColumn()
            ->make(true);  

确保您在 Datatables::of 方法中使用了正确的 $data2 var。


推荐阅读