2017 © Pedro PelΓ‘ez
 

library export

image

advanced-eloquent/export

  • Friday, November 18, 2016
  • by huuuk
  • Repository
  • 1 Watchers
  • 0 Stars
  • 4 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

Π˜ΠΌΠΏΠΎΡ€Ρ‚/экспорт Eloquent ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ

ΠŸΠ°ΠΊΠ΅Ρ‚ позовляСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ рСкурсивный ΠΈΠΌΠΏΠΎΡ€Ρ‚/экспорт eloquent ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², (*1)

Установка

via composer, (*2)

"required" : {
    ...
    "huuuk/eloquent-export": "^1.0",
    ...
},

Π΄ΠΎΠ±Π°Π²Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€, (*3)

'porviders' => [
    // ...
    'AdvancedEloquent\Export\ExportServiceProvider',
    // ...
],

ИспользованиС

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΡΠΏΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, (*4)

namespace App;

use AdvancedEloquent\Export\Model;
// use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $fillable = [
        'name',
        'age',
        'city_id',
    ];

    public function city()
    {
          return $this->belongsTo('App\City');
    }

    public function posts()
    {
          return $this->hasMany('App\Post');
    }

    public function roles()
    {
          return $this->belongsToMany('App\Role');
    }
}

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ exportableAttributes Π² этой ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ½Π΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ, просто ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚Ρ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅., (*5)

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ

  • BelongsTo
  • HasMany
  • BelongsToMany
class User extends Model
{
   // ...
    protected function exportableAttributes()
    {
          return [
              'name',
              'age',
              'city',
              'posts',
              'roles',
          ];
    }
    // ...
}

И Π½Π΅ Π·Π°Π±ΡƒΠ΄Ρ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс этих ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ., (*6)

namespace App;

use AdvancedEloquent\Export\Model;
// use Illuminate\Database\Eloquent\Model;

class City extends Model
{
    protected $fillable = [
        'name',
        'population',
    ];

    protected function exportableAttributes()
    {
          return [
              'name',
              'population',
          ];
    }
}

```php namespace App;, (*7)

use AdvancedEloquent\Export\Model; // use Illuminate\Database\Eloquent\Model;, (*8)

class Post extends Model { protected $fillable = [ 'title', 'published_at', 'user_id', ];, (*9)

protected function exportableAttributes()
{
      return [
           'title',
           'published_at',
      ];
}

}, (*10)

```php
namespace App;

use AdvancedEloquent\Export\Model;
// use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
    protected $fillable = [
        'name',
        'permission',
    ];

    protected function exportableAttributes()
    {
          return [
              'name',
              'permission',
          ];
    }

    public function users()
    {
          return $this->belongsToMany('App\User');
    }
}

Π’ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠΎΡ€ΠΎΡ€Π»ΡŒ, (*11)

$user = User::findOrFail($id);
$json = $user->export();

// ....

$user = User::import($json);

Настройка

ΠŸΠ°ΠΊΠ΅Ρ‚ содСрТит ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, языковыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ прСдставлСния Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ просто ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ ΠΈΡ…, (*12)

# config
php artisan vendor:publish --provider="AdvancedEloquent\Export\ExportServiceProvider" --tag="config"
# view
php artisan vendor:publish --provider="AdvancedEloquent\Export\ExportServiceProvider" --tag="views"
# lang
php artisan vendor:publish --provider="AdvancedEloquent\Export\ExportServiceProvider" --tag="lang"

Π’Π°ΠΊΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ содСрТит Ρ€ΠΎΡƒΡ‚Ρ‹ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° экспорта ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ:, (*13)

<a href="{{route('export', ['type' => get_class($unit), 'id' => $unit->id])}}" class="btn btn-default">

ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚(с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнной Ρ„ΠΎΡ€ΠΌΡ‹), (*14)

@include('eloquent-export::import-form',
    [
        // ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹(классы) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,
        // Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° структурных ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ
        // Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€  ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.
        // Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, ΠΈΠ»ΠΈ пустой , Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ всС Ρ‚ΠΈΠΏΡ‹
        'supportedTypes' => [ App\Unit::class ], 
        // Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
        // Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€
        'additionalAttributes' => [ 'parent_id' => $patrentUnit->id ],
        // url Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² случаС
        // ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ redirect()->back()
        // Π² ΠΎΠ±ΠΎΠΈΡ… случаях ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Π² ссСсию записываСтся
        // пСрСмСнная success_import = true
        'successRedirect' => route('units.edit', ['id' => $parentId->id]),
    ])

ВстроСнныС Ρ€ΠΎΡƒΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»Ρ‡ΠΈΡ‚ΡŒ Π² config/export.php, (*15)

<?php 
return [
    'builtin_routes' => false,
];

Π’ слСд вСрсиях планируСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°

  • HasOne
  • MorphTo
  • MorphMany
  • MorphToMany

The Versions

18/11 2016

dev-master

9999999-dev

  Sources   Download

MIT

The Requires

 

The Development Requires

by Igor Kozhevnikov

18/11 2016

1.0

1.0.0.0

  Sources   Download

MIT

The Requires

 

The Development Requires

by Igor Kozhevnikov