【问题标题】:Call to undefined method Illuminate\Database\Query\Builder::toArray()调用未定义的方法 Illuminate\Database\Query\Builder::toArray()
【发布时间】:2023-03-16 13:23:02
【问题描述】:

我正在尝试以 excel 格式下载数据库数据,但是当我点击下载时,它会显示:

调用未定义的方法 Illuminate\Database\Query\Builder::toArray()

控制器

function excel()
{
    $pdf_data = DB::table('importpdfs')->toArray();
    $pdf_array[] = array('Battery', 'No_of_questions_attempted', 'SAS', 'NPR', 'ST', 'GR');

    foreach ($pdf_data as $pdf) {
        $pdf_array[] = array(
            'Battery'                   => $pdf->Battery,
            'No_of_questions_attempted' => $pdf->No_of_questions_attempted,
            'SAS'                       => $pdf->SAS,
            'NPR'                       => $pdf->NPR,
            'ST'                        => $pdf->ST,
            'GR'                        => $pdf->GR
        );
    }

    Excel::download('Pdf Data', function ($excel) use ($pdf_array) {
        $excel->setTitle('Pdf Data');
        $excel->sheet('Pdf Data', function ($sheet) use ($pdf_array) {
            $sheet->fromArray($pdf_array, null, 'A1', false, false);
        });
    })->download('xlsx');
}

【问题讨论】:

    标签: laravel eloquent laravel-5.8


    【解决方案1】:

    您尝试在查询生成器上调用toArray,您必须先加载数据,然后在集合上调用toArray

    改变

    $pdf_data = DB::table('importpdfs')->toArray();
    

    $pdf_data = DB::table('importpdfs')->get()->toArray();
    

    【讨论】:

    • 现在它说:传递给 Maatwebsite\Excel\Excel::download() 的参数 2 必须是字符串类型,给定对象,在 D:\xampp\htdocs\laravel\webpro3\vendor 中调用\laravel\framework\src\Illuminate\Support\Facades\Facade.php 在第 237 行
    • Excel::download 的第一个参数必须是您的 Exportclass 的实例,第二个参数是文件名,您不能将闭包传递给它。查看quick start guide
    猜你喜欢
    • 2019-03-06
    • 2014-04-23
    • 1970-01-01
    • 2020-01-04
    • 2018-10-03
    • 1970-01-01
    • 2019-04-02
    • 2016-11-25
    • 2017-07-19
    相关资源
    最近更新 更多