【问题标题】:Call to undefined method stdClass::toArray()调用未定义的方法 stdClass::toArray()
【发布时间】:2017-11-09 14:14:00
【问题描述】:

我想导出表格,但并非所有字段都必须导出。 对不起,我的英语不是很好...

函数excel

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:调用未定义 方法 stdClass::toArray()

【问题讨论】:

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


【解决方案1】:

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()

【讨论】:

  • 获取错误调用数组上的成员函数 toArray()... broo
  • 你使用的是什么版本的 Laravel?
  • laravel 5.2 兄弟
  • 请帮帮我,从昨天开始我一直在找问题
  • 我想导出表格但不是所有字段都必须导出
猜你喜欢
  • 1970-01-01
  • 2017-04-24
  • 2019-11-20
  • 1970-01-01
  • 2012-04-02
  • 2019-07-26
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多