首页 > 解决方案 > 如何通过 user_id 使用 Laravel 导入 excel?

问题描述

我在使用 Laravel 导入 excel 时遇到问题。用户希望将供应商数据的excel导入数据库。表suppliers得到了user_id,但用户可能没有自己的user_id. 因此,在导入 excel 文件时,用户使用不带user_id列的 excel。所以我想传递user_id那个用户并存储在数据库中。

供应商进口控制器

public function store(Request $request)
{
    $user_id = auth()->user()->id;        
    Excel::import(new SuppliersImport($user_id), request()->file('file'));

    return  redirect('/suppliers')->withStatus('Excel file imported successfully');
}

供应商进口

public function  __construct($user_id)
{

    $this->user_id =$user_id;
}
public function model(array $row)
{
    return new Supplier([
        'name' =>$row[0],
        'phone' =>$row[1],
        'email' =>$row[2],
        'address' =>$row[3],
        'city' =>$row[4],
        'country' =>$row[5],
        'customer' =>$row[6],
        'user_id'=> $this->user_id,         
        
    ]);

错误

SQLSTATE [HY000]: 一般错误: 1364 字段 'user_id' 没有默认值 (SQL: 插入suppliers( name, phone, email, address, city, country, customer, updated_at, created_at) 值 (soe, 176893848, soe@mail.com, abc, Yangon , 缅甸, 1, 2020-11-27 12:15:08, 2020-11-27 12:15:08))

标签: laravelexcel-import

解决方案


所以你能做的是

public function model(array $row)
{    
    $user = auth()->user();  //Get the current user 
    return new Supplier([
        'name' =>$row[0],
        'phone' =>$row[1],
        'email' =>$row[2],
        'address' =>$row[3],
        'city' =>$row[4],
        'country' =>$row[5],
        'customer' =>$row[6],
        'user_id'=> $user->id,      // add their user id when importing    
        
    ]);

推荐阅读