jameron/import

一个简单的包,用于通过CSV导入数据。

安装: 61

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:项目

1.4.1 2018-01-26 00:19 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
  1. 将包添加到您的compos.json文件中
    "jameron/import": "*",
composer update

**注意**:Laravel 5.5+用户有自动发现功能,因此您可以忽略步骤2和3

  1. 更新您的提供者
        Jameron\Regulator\ImportsServiceProvider::class,
  1. 更新您的外观
        'Imports' => Jameron\Regulator\Facades\ImportsFacade::class,
  1. 发布视图和配置
php artisan vendor:publish
  1. (仅当使用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
  1. 更新您的webpack.mix.js文件
   .js('resources/assets/import/js/upload.js', 'public/js/Upload.js')
   .sass('resources/assets/import/sass/upload.scss', 'public/css')
  1. 编译它
npm run dev
  1. 设置您的路由和控制器
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,
            ] 
        ];
        
    }

}