laravel数据库迁移_laravel导入excel

2025-03-17 0 10

Image

《laravel数据库迁移_laravel导入excel》

在Laravel项目中,将Excel数据导入到数据库是一个常见的需求。解决方案是利用Laravel的数据库迁移功能构建好数据库结构,并结合第三方库如maatwebsite/excel来处理Excel文件的读取和导入操作。

一、使用maatwebsite/excel库

通过Composer安装maatwebsite/excel库,在命令行输入composer require maatwebsite/excel

然后创建一个用于导入的模型类,例如我们有一个用户信息的Excel要导入,先确保已经通过迁移创建了users表。在模型User.php中:

php
namespace AppModels;</p>

<p>use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateFoundationAuthUser as Authenticatable;</p>

<p>class User extends Authenticatable
{
    use HasFactory;</p>

<pre><code>protected $fillable = ['name', 'email', 'password'];

}

接下来创建一个导入类php artisan make:import UsersImport --model=User,这会在App/Imports目录下生成UsersImport.php文件:

php
namespace AppImports;</p>

<p>use AppModelsUser;
use MaatwebsiteExcelConcernsToModel;
use MaatwebsiteExcelConcernsWithHeadingRow;</p>

<p>class UsersImport implements ToModel, WithHeadingRow
{
    public function model(array $row)
    {
        return new User([
            'name'     => $row['name'],
            'email'    => $row['email'],
            'password' => bcrypt($row['password']),
        ]);
    }
}

在控制器中实现导入逻辑,比如UserController.php:

php
namespace AppHttpControllers;</p>

<p>use AppImportsUsersImport;
use MaatwebsiteExcelFacadesExcel;
use IlluminateHttpRequest;</p>

<p>class UserController extends Controller
{
    public function import(Request $request)
    {
        $file = $request->file('excel_file');
        Excel::import(new UsersImport(), $file);
        return back()->with('success', 'Excel数据导入成功!');
    }
}

同时在视图中提供一个文件上传表单,指向上述控制器方法。

二、另一种思路 - 手动解析Excel

如果不想使用额外的库,也可以用原生的方法。先用PhpSpreadsheet等库读取Excel内容,再逐行插入数据库。

在控制器中:

```php
use PhpOfficePhpSpreadsheetIOFactory;

public function manualImport(Request $request)
{
$path = $request->file('excel_file')->getRealPath();
$spreadsheet = IOFactory::load($path);
$worksheet = $spreadsheet->getActiveSheet();
$highestRow = $worksheet->getHighestRow();
for ($row = 2; $row <= $highestRow; $row++) {
$name = $worksheet->getCell("A{$row}")->getValue();
$email = $worksheet->getCell("B{$row}")->getValue();
$password = $worksheet->getCell("C{$row}")->getValue();
User::create([
'name' => $name,
'email' => $email,
'password' => bcrypt($password),
]);
}
return back()->with('success', 'Excel数据手动解析导入成功!');
}
```
以上两种方法都可以实现Laravel中Excel数据向数据库的导入,可以根据项目需求和环境选择合适的方式。

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载