PHPackages                             advanced-eloquent/export - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. advanced-eloquent/export

ActiveLibrary[Database &amp; ORM](/categories/database)

advanced-eloquent/export
========================

1.0(9y ago)019MITPHP

Since Nov 18Pushed 9y ago1 watchersCompare

[ Source](https://github.com/huuuk/eloquent-export)[ Packagist](https://packagist.org/packages/advanced-eloquent/export)[ RSS](/packages/advanced-eloquent-export/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependencies (2)Versions (2)Used By (0)

Импорт/экспорт Eloquent моделей
===============================

[](#импортэкспорт-eloquent-моделей)

Пакет позовляет производить рекурсивный импорт/экспорт eloquent объектов

Установка
---------

[](#установка)

via composer

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

```

добавте провайдер

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

Использование
-------------

[](#использование)

Замените родительский класс модели которую хотите экспорировать

```
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` в этой модели, он должнен возвращать атрибуты которые вы хотите экспортировать. Если вы хотите экспортировать отношения модели, просто укажите название метода, котрый возвращает это отношение.

#### На данный момент поддерживаются следующие виды отношений

[](#на-данный-момент-поддерживаются-следующие-виды-отношений)

- BelongsTo
- HasMany
- BelongsToMany

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

И не забудте заменить родительский класс этих моделей.

```
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',
          ];
    }
}
```

```
namespace App;

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

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

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

```
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');
    }
}
```

Тперь вы можете экспортировать и импортировать как корорль

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

// ....

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

Настройка
---------

[](#настройка)

Пакет содержит конфигурационные файлы, языковые файлы и представления Чтобы их переопределить просто опубликуйте их

```
# 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"
```

Также пакет содержит роуты для импорта экспорта объектов, на которые можно ссылаться так:

```

```

и импорт(с помощью встроенной формы)

```
@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`

```
