jameron / import
一个简单的包,用于通过CSV导入数据。
1.4.1
2018-01-26 00:19 UTC
This package is auto-updated.
Last update: 2024-09-27 20:00:20 UTC
README
此包已构建以与Laravel 5.4.33及更高版本协同工作。
此包包含可用于您项目的函数和方法,您还可以选择使用视图或仅使用视图部分来改进您的用户体验。如果您使用上传视图,请确保您也要求在此处找到的admin包:[Admin包](https://github.com/jameron/admin)
您的composer文件可能看起来像这样
"jameron/admin": "*", "jameron/import": "*",
某些旧版本可能不兼容。让我们看看是否能通过10步让您运行起来。如果您是全新的开始,请首先创建您的laravel应用程序。
composer create-project --prefer-dist laravel/laravel blog
- 将包添加到您的compos.json文件中
"jameron/import": "*",
composer update
**注意**:Laravel 5.5+用户有自动发现功能,因此您可以忽略步骤2和3
- 更新您的提供者
Jameron\Regulator\ImportsServiceProvider::class,
- 更新您的外观
'Imports' => Jameron\Regulator\Facades\ImportsFacade::class,
- 发布视图和配置
php artisan vendor:publish
- (仅当使用Regulator进行角色和权限时)用导入权限填充数据库,并将权限分配给管理员角色
您可以直接通过命令行调用它,或将其添加到应用程序的seeder文件中
添加到应用程序seeder
database/seeds/DatabaseSeeder.php
$this->call(\Jameron\Import\database\seeds\ImportSeeder::class);
通过命令行调用
php artisan db:seed --class=\\Jameron\\Import\\database\\seeds\\ImportSeeder
- 更新您的webpack.mix.js文件
.js('resources/assets/import/js/upload.js', 'public/js/Upload.js') .sass('resources/assets/import/sass/upload.scss', 'public/css')
- 编译它
npm run dev
- 设置您的路由和控制器
Route::group(['middleware' => ['web', 'auth', 'role:admin']], function () { Route::get('/import', 'ImportController@getImport'); Route::post('/import', 'ImportController@postImport'); });
use \Jameron\Import\Http\Requests\ImportRequest; class ImportController extends Controller { public function getImport() { return view('import::upload'); } public function postImport(ImportRequest $request) { $csv = $request->file('csv'); $headers_cleanup_rules = ['trim','pound_to_word_number','spaces_to_underscores', 'remove_special_characters','lowercase']; $import_model = \App\Models\QuizScores::class; $validator = \App\Http\Requests\QuizScoreRequest::class; $relationships = [ [ 'create_if_not_found' => true, 'csv_column' => 'student_id', 'reference_table' => 'users', 'reference_field' => 'student_identification_number', 'reference_primary_key' => 'id', 'foreign_key' => 'student_id', 'relationship' => 'belongsTo', 'model' => \App\Models\User::class, 'validator' => \App\Http\Requests\UserRequest::class, 'roles' => ['student'], // this only works for new users with the regulator package installed 'extra_columns' => [ [ 'column' => 'student_name', 'maps_to' => ['first_name','last_name'], 'explode_on' => ' ' ], [ 'column' => 'email', 'maps_to' => 'email', ] ], 'append_data' => [ 'password' => \Hash::make('ChangeIt!') ] ], [ 'csv_column' => 'test_name', 'reference_table' => 'tests', 'reference_field' => 'name', // This assumes that the name field on the tests table has a rule that forces unique 'reference_primary_key' => 'id', 'foreign_key' => 'test_id', 'model' => \App\Models\Tests::class, 'validator' => \App\Http\Requests\TestRequest::class, ] ]; } }