Newbie 123
Newbie 123

Reputation: 274

How to create 'yajra/laravel-datatables' with multiple arguments?

How to create 'yajra/laravel-datatables' from multiple data sources? Here I want to display multiple tables from different databases.

 $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);  

Here I am confused about how to pass 2 variables to Datatables? Here is my script.

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",

        },
       });

Upvotes: 1

Views: 3772

Answers (1)

iizno
iizno

Reputation: 849

You can use the ->union() method of Eloquent :

 $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);  

Make sure you are using the proper $data2 var in the Datatables::of method.

Upvotes: 2

Related Questions