如何使用Maat maatwebsite / excel包批量导入在laravel中也有配置文件表的用户数据?

时间:2019-02-01 06:55:15

标签: excel laravel import maatwebsite-excel

我有一个模型用户,它与模型概要文件具有一对一的关系。

配置文件表具有两列user_id整数列和“信息” jsonb列。我有一个csv文件,其中包含名称为ID,信息等的用户列表。我想要的是将csv文件中的信息存储到我的用户表和个人资料表中。

我能够在用户表中存储信息。但是无法在配置文件表json列中存储用户的配置文件信息。

这是我如何将数据从控制器传递到excel

 public  function  import(Request $request)
    {
        Excel::import(new UsersImport,request()->file('file'));

        return back();
    }

这是UsersImport类代码

class UsersImport implements ToModel
{

    public function model(array $row)
    {
        return new User ([
            'student_id' => $row[0],
            'name' => $row[1],
            'email' => $row[2],
            'password' => '123456'


        ]);

    }

}

用户表:

Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('student_id')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

个人资料表:

Schema::create('profiles', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id');
            $table->jsonb('information')->nullable();
            $table->timestamps();
        });

2 个答案:

答案 0 :(得分:1)

//用User :: Create替换新用户

import scrapy

class LinkSpider(scrapy.Spider):
    name = "page"

    start_urls = [
        'https://www.topart-online.com/de/Blattzweige-Blatt-und-Bluetenzweige/l-KAT282?seg=1'
        ]

    def parse(self, response):
        yield{
            'ItemSKU': response.xpath('//span[@class="sn_p01_pno"]/text()').getall(),
            'title': response.xpath('//div[@class="sn_p01_desc h4 col-12 pl-0 pl-sm-3 pull-left"]/text()').getall(),
            'ItemEAN': response.xpath('//div[@class="productean"]/text()').getall(),
            'Delivery_Status': response.xpath('//div[@class="availabilitydeliverytime"]/text()').getall()

        }

答案 1 :(得分:0)

尝试一下,可能可行

class UsersImport implements ToModel
{

    public function model(array $row)
    {
        $user = new User ([
            'student_id' => $row[0],
            'name' => $row[1],
            'email' => $row[2],
            'password' => '123456'
        ]);

        //create a profile for user, I'm assuming that you have model Profile for profiles table
        Profile::create([
            'user_id' => $user->id,
            //and other profile data    
        ]);  
        return $user;

    }

}