我正在使用宅基地流浪者来存储数据库...现在我以品牌在自己的宅基地中创建了表
mysql> desc brands;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
我正在从此表中获取大量数据。现在我想从.csv格式保存的Excel中添加此表的字段,我如何做到这一点...
最佳答案
我几年前在网上找到了此代码。它可能需要稍作修改,但是概念在那里。
在您的Database Seeder文件中,在run()方法中:
// path to csv file
$csvFilename = app_path().'/../database/seeds/csv/filename.csv';
// run the seeder and get the variable to store the CSV data array
$seedData = $this->seedFromCSV($csvFilename, ',');
// Insert into your table
DB::table($csvTable)->insert($seedData);
现在,在下面的播种器中,确保标题名称与数据库中的表名称匹配。
/**
* Collect data from a given CSV file and return as array
*
* @param $filename
* @param string $deliminator
* @return array|bool
*/
private function seedFromCSV($filename, $deliminator = ',')
{
$header = NULL;
$data = array();
if(($handle = fopen($filename, 'r')) !== FALSE)
{
while(($row = fgetcsv($handle, 1000, $deliminator)) !== FALSE)
{
if(!$header) {
$header = $row;
} else {
$data[] = array_combine($header, $row);
}
}
fclose($handle);
}
return $data;
}