【问题标题】:How can I join two tables and import the data by excel using Maatwebsite package in laravel?如何在 laravel 中使用 Maatwebsite 包连接两个表并通过 excel 导入数据?
【发布时间】:2021-12-22 00:13:24
【问题描述】:

我正在尝试通过在控制器中使用查询来连接用户和客户表

控制器中的导出功能

 public function export() 
    {
        //$arrays = [$level_one_array, $level_two_array, $level_three_array];
        $arrays =  Client::select('clients.*','users.*')->join('users', 'users.id', '=', 'clients.user_id')->where('users.type', '=', 'client')->get();
        return Excel::download(new ClientsExport($arrays), 'clients.xlsx');
    }

Users 和 clients 表通过 id 连接。我将这个过滤后的数据传递给导出函数

ClientsExport 中的代码

class ClientsExport implements FromCollection
{
    /**
    * @return \Illuminate\Support\Collection
    */

    private $collection;

    public function __construct($arrays)
    {
        $output = [];

        foreach ($arrays as $array) {
            // get headers for current dataset
            $output[] = array_keys($array[0]);
            // store values for each row
            foreach ($array as $row) {
                $output[] = array_values($row);
            }
            // add an empty row before the next dataset
            $output[] = [''];
        }

        $this->collection = collect($output);
    }

    public function collection()
    {
        return $this->collection;
    }
}

但我遇到了错误

[2021-11-09 14:42:58] local.ERROR: array_values() expects parameter 1 to be array, object given {"userId":1,"exception":"[object] (ErrorException(code: 0): array_values() expects parameter 1 to be array, object given at /home/myonecity/public_html/crm/app/Exports/ClientsExport.php:23)
[stacktrace]

如何解决这个问题?

【问题讨论】:

    标签: php laravel export-to-excel laravel-7 maatwebsite-excel


    【解决方案1】:

    在您的导出功能中进行以下更改。将 get() 替换为 toArray()。

    public function export() 
    {
        //$arrays = [$level_one_array, $level_two_array, $level_three_array];
        $arrays =  Client::select('clients.*','users.*')->join('users', 'users.id', '=', 'clients.user_id')->where('users.type', '=', 'client')->toArray();
        return Excel::download(new ClientsExport($arrays), 'clients.xlsx');
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-08
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 2020-12-20
      • 1970-01-01
      相关资源
      最近更新 更多