Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

troytsang's avatar

Laravel excel export problem

I have more than one table. How can i only using one model and controller to export the different tables contents?

Model:

class TestModel extends Model { protected $table = 'posts'; protected $fillable = ['title', 'content']; }

Controller:

namespace App\Http\Controllers;

use Illuminate\Http\Request; use Illuminate\Support\ServiceProvider; use App\Http\Requests; use App\Http\Controllers\Controller; use App\TestModel; //use App\Excel; use Excel;

class ExportController extends Controller { public function index($type) { $data = TestModel::get(['title', 'content'])->toArray(); return Excel::create('Post Record', function ($excel) use ($data) { $excel->sheet('mySheet', function ($sheet) use ($data) { $sheet->fromArray($data); }); })->download($type); } }

0 likes
2 replies
RamjithAp's avatar
Level 10

Just directly export from your controller using DB class

class ExportController extends Controller { 
public function index($type) {

$data = TestModel::get(['title', 'content'])->toArray(); 
return Excel::create('Post Record', function ($excel) use ($data) { 
$excel->sheet('mySheet', function ($sheet) use ($data) { $sheet->fromArray($data); }); 
})->download($type); 


$data2 = DB::table('your_second_table_name')->get(['title', 'content'])->toArray(); 
return Excel::create('Post Record', function ($excel) use ($data2) { 
$excel->sheet('mySheet', function ($sheet) use ($data2) { $sheet->fromArray($data2); }); })->download($type); 

}
}

Please or to participate in this conversation.