调用未定义的方法stdClass :: toArray()

时间:2017-11-09 14:14:00

标签: php laravel export-to-excel laravel-blade

我想导出表,但不是所有字段都必须导出。 抱歉,我的英语不是很好......

功能优秀

public function excel()
    {
        $rekanan_internal = rekanan_internal::all();
        $selects = DB::table('rekanan_internal')->select('nama','description','pic','contact')->get();
        $selectsArray = [];
        $selectsArray = ['nama','description','pic','contact'];
        foreach ($selects as $select) 
        {
            $selectsArray = $select->toArray();
        } 

        Excel::create('rekanan_internal', function($excel) use($rekanan_internal){
            $excel->sheet('sheet1',function($sheet) use($selectsArray){
                $sheet->fromArray($rekanan_internal);
            });
        })->download('xlsx');
    }

收到错误

  

ExportController.php第31行中的FatalErrorException:调用undefined   方法stdClass :: toArray()

1 个答案:

答案 0 :(得分:3)

DB::table('xxxx')->get()将返回stdClass的集合。 stdClass没有任何功能toArray()

您可能想要创建整个集合的数组,在这种情况下,您可以使用以下内容替换for循环:

$selectsArray = $selects->toArray();

这是因为集合确实有一个名为toArray的函数。

<强>更新
您甚至可以将代码缩短为以下内容:

$selectsArray = DB::table('rekanan_internal')
    ->select('nama','description','pic','contact')
    ->get()
    ->toArray();

更新2:
对于小于5.3的Laravel版本,您甚至不需要将结果转换为数组,因为结果是数组。

$selectsArray = DB::table('rekanan_internal')
    ->select('nama','description','pic','contact')
    ->get()