用Excel生成Laravel播种机代码的实例教程

196 阅读5分钟

你有多少次在一个项目上工作,而这个项目带有现有的数据集?又有多少次,这些数据集是以excel格式发给你的?

那么,在这篇文章中,我将介绍一个快速、省时的技巧,即从excel数据集生成播种机代码。我将使用一个样本数据集,并包括可以下载的excel文件,这样你就可以跟着做了。另外,你也可以使用你自己的数据集,只需确保你改变所有字段的名称以符合你的数据集。

首先,让我们用数据集设置一下场景。

给定的数据集

好吧,让我们想象一下,你已经得到了一个有三列的数据集,它有一个first_name、last_name和一个email列,都是由50条记录填充的。请在这里下载它

让我们继续前进,准备迁移,创建我们将称之为雇员的表。

要做到这一点,我们需要在cli上执行以下命令。

php artisan make:migration create_employees_table

接下来,我们找到在数据库/migrations/中创建的迁移文件。

打开该文件,编辑up() ,使其与下面的内容相匹配。

public function up()
{
        Schema::create('employees', function (Blueprint $table) {
            $table->id();
            $table->string('first_name');
            $table->string('last_name');
            $table->string('email');
            $table->timestamps();
        });
}

现在要执行迁移来设置我们的新表。在clipper中运行以下命令。

最后,让我们为刚刚创建的雇员表创建模型。

php artisan make:model Employee

一旦完成,确保该表在你的数据库中是可见的,我们就可以进入下一个部分,生成播种机。

使用Excel来生成播种机代码

现在我们可以进入正题了,让我们用Excel的力量来节省一些时间。在我们开始这一部分之前,这里有一个我们要使用的excel文件的截图样本。

sample data set

有了关于数据外观和迁移/表结构的知识,我们现在知道了播种机是什么样子的。

让我们首先创建一个新的种子文件。

php artisan make:seeder employee_table_seeder

接下来,找到并打开它,它将位于数据库/seeders下。

好的,所以我们现在需要创建基本的代码结构,我们将与数据集中的第一条记录的数据一起工作。

在你的seedersrun() 函数中,添加以下代码。

$employee = new Employee(["first_name"=> "Emmett", "last_name" => "Packington", "email" => "epackington0@craigslist.org"]);
$employee->save();

这段代码就是我们现在所需要的,从excel数据集中创建整个播种机。我们现在要做的是把这段代码放到excel中,把它切开,并使用一些公式。接下来的部分将分为几个步骤。

第1步 -

打开excel文件,找到F1单元格,粘贴以下内容

$employee = new Employee(["first_name"=> "Emmett", "last_name" => "Packington", "email" => "epackington0@craigslist.org"]);

接下来,找到F2单元格并粘贴以下内容

$employee->save();

你的excel文件现在应该看起来像下面这样

employee data set screenshot 2

第2步 -

接下来,我们将改变我们看这些数据的方式。数据集中的每一行现在都将被分成 "变量"。A2是名字,B2是姓氏,C2是电子邮件。请牢记这一点。

因此,我们需要准备好PHP语法,以便在使用我们的公式时为这些变量留出空间。

进入F1单元格,删除Emmett、Packington和电子邮件epackington0@craigslist.org

这应该会留下类似下面的内容

$employee = new Employee(["first_name"=> "", "last_name" => "", "email" => ""]);

正如你所看到的,现在有地方可以填入我们的变量。

第3步 -
  1. $employee = new Employee(["first_name"=> " 复制到G1单元格中
  2. ", "last_name" => " 复制到 H1 单元格中
  3. ", "email" => " 复制到I1单元格
  4. "]); 复制到J1单元格中
  5. 最后,删除F1的任何内容。

现在的情况应该是这样的。确保你检查H1、I1和J1单元格的起始双引号,因为有时Excel会删除它们。

employee data set screenshot 4

第4步 -

现在我们有了不同单元格的分割字符串,我们可以进入有趣的部分,创建公式以生成大量的代码,我们的数据集已经准备好播种。

找到D2单元格并输入以下公式(注意,当你看到GG1时,这意味着该公式锁定在该特定单元格)。

=$G$1&A2&$H$1&B2&$I$1&C2&$J$1&" "&$F$2

当然,上面的内容可能看起来很艰巨,但它真正做的是把所有的字符串串联起来。

让我们以另一种方式来看待它**(但不要使用这个**)。

=employee = new Employee(\["first\_name"=> "&A2(first\_name\_record)&", "last\_name" => "&B2(last\_name\_record)&", "email" => "&C2(email\_record)&"\]); & " " & employee->save();

希望这能让我们更清楚地了解这个公式在做什么。

第5步 -

最后,我们现在要做的是拖动并复制该公式,与每个雇员的记录平行。在D2单元格,点击它以突出显示它,并看到右下角的小方块。点击并按住,将其一直向下拖到数据集的末端。

然后,一旦完成,复制D列中的所有行,并将它们粘贴到种子文件中。

请看下面的小视频

www.codewall.co.uk/wp-content/…

第6步 -

现在剩下的就是运行播种机了。

在你的数据库/DatabaseSeeder.php类中添加以下内容

$this->call(employee_table_seeder::class);

然后,执行以下命令

php artisan db:seed

然后,嘣的一声,雇员表将被播种。请看下面我的完全播种的表

employee table seeded screenshot

就是这样,如果你想保留它作为参考,你可以下载完成的带公式的excel文件。

在这里下载完成的版本

总结

正如你所看到的,这种方法可以节省几个小时的艰苦编码迁移,它也不限于Laravel。我敢肯定,其他编码语言也有类似的语法,并且可以从这种从excel生成种子代码的方法中受益。