如何传递参数以导出Laravel Excel的文件以进行数据库查询 [英] How to pass parameter to export file of Laravel Excel for DB query

查看:137
本文介绍了如何传递参数以导出Laravel Excel的文件以进行数据库查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

将id变量传递给"where"请求,以获取与id匹配的数据库条目,然后使用Laravel Excel将这些条目导出到excel工作表中.我似乎找不到传递变量的方法.

Pass an id variable to a 'where' request to fetch database entries that match id and export these entries to an excel sheet using Laravel Excel. I can't seem to find a way to pass the variable.

我的控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Exports\MttRegistrationsExport;
use Maatwebsite\Excel\Facades\Excel;

class ExcelController extends Controller
{
    public function export($id)
    {
        return Excel::download(new MttRegistrationsExport, 'MttRegistrations.xlsx', compact('id'));
    }
}

我的导出文件:

<?php

namespace App\Exports;

use App\MttRegistration;
use Maatwebsite\Excel\Concerns\FromCollection;

class MttRegistrationsExport implements FromCollection
{
    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        return MttRegistration::where('lifeskill_id',$id)->get()([
            'first_name', 'email'
        ]);
    }
}

我的路线:

Route::get('/mtt/attendance/{id}',[
    'as' => 'mtt.attendance',
    'uses' => 'ExcelController@export']);

推荐答案

通过将id传递到MttRegistrationsExport类中进行修改.

Modify by passing id into the MttRegistrationsExport class.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Exports\MttRegistrationsExport;
use Maatwebsite\Excel\Facades\Excel;

class ExcelController extends Controller
{
    public function export(Request $request)
    {
        return Excel::download(new MttRegistrationsExport($request->id), 'MttRegistrations.xlsx');
    }
}

现在让我们设置一个构造函数,以便您可以将ID传递给MttRegistrationsExport类.

Now let's setup a constructor so you can pass an id into the MttRegistrationsExport class.

<?php

namespace App\Exports;

use App\MttRegistration;
use Maatwebsite\Excel\Concerns\FromCollection;

class MttRegistrationsExport implements FromCollection
{


protected $id;

 function __construct($id) {
        $this->id = $id;
 }

/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
    return MttRegistration::where('lifeskill_id',$this->id)->get()([
        'first_name', 'email'
    ]);
}
}

这篇关于如何传递参数以导出Laravel Excel的文件以进行数据库查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆