PHPackages                             dongttfd/laravel-upload-model - 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. [File &amp; Storage](/categories/file-storage)
4. /
5. dongttfd/laravel-upload-model

ActiveLibrary[File &amp; Storage](/categories/file-storage)

dongttfd/laravel-upload-model
=============================

Laravel Upload On Model

0.2.7(1y ago)32421MITPHPPHP &gt;=7.0,&lt;8.5

Since May 24Pushed 1y ago1 watchersCompare

[ Source](https://github.com/dongttfd/laravel-upload-model)[ Packagist](https://packagist.org/packages/dongttfd/laravel-upload-model)[ RSS](/packages/dongttfd-laravel-upload-model/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (6)Versions (13)Used By (0)

Upload file on eloquent model
=============================

[](#upload-file-on-eloquent-model)

Laravel Support
---------------

[](#laravel-support)

- `"laravel/framework": "^5.7|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0"`

What It Does
------------

[](#what-it-does)

- Easy and fast to **move uploaded file** to your folder via model functions (eg: `create, update, fill, save ...`)
- Convenient with **Auto assign** file path to attributes of eloquent model
- Easy to **retry file** of model
- Integrated JSON columns
- Integrated SoftDelete

Installation
------------

[](#installation)

**Via Composer**

```
composer require dongttfd/laravel-upload-model
```

Basic Usage
-----------

[](#basic-usage)

### Use packages at your model:

[](#use-packages-at-your-model)

```
namespace App\Models;

use DongttFd\LaravelUploadModel\Contracts\UploadOnEloquentModel;
use DongttFd\LaravelUploadModel\Eloquent\UploadFileEloquent;

class User extends Model implements UploadOnEloquentModel
{
    use UploadFileEloquent;

    ...
}
```

### Implement

[](#implement)

*Model create with uploaded file*

```
...

// $file must is instance of Illuminate\Http\UploadedFile
$file = $request->file('avatar');

User::create(['avatar' => $file]);
```

*Model update with uploaded file*

```
...

// $file must is instance of Illuminate\Http\UploadedFile
$file = $request->file('avatar');

$user->update(['avatar' => $file]);
```

*Easy to retries*

```
...

// $file must is instance of Illuminate\Http\UploadedFile
$file = $request->file('avatar');

$user->update(['avatar' => $file]);

// path of file
$user->avatar;

// url of file
$user->avatar_url;
```

### Supported JSON columns

[](#supported-json-columns)

*Read [Override](##Override) before use JSON columns*

*With JSON/Array columns*

```
// JSON object

$front = $request->file('front');
$back = $request->file('back');

$user->create([
    ...
    'card' => [
        'front' => $front,
        'back' => $back
    ]
]);

// retries path of file
$user->card['front'];
$user->card['back'];

// retries url of file
$user->card['front_url'];
$user->card['back_url'];
```

```
// JSON Array
$photos = $request->file('photos'); // [UploadedFile, UploadedFile]

$post->create([
    ...
    'photos' => $photos
]);

// retries path of file
$post->photos; // ['', ]

// retries url of file
$post->photos_url; // ['', ]
```

```
// JSON Array and Object combined
$variant = $request->only([
    'photos',  // UploadedFile[]
    'name', // String
    'key' // String
]);

$post->update([
    ...
    'variant' => $variant
]);

// retries path of file
$post->variant['photos']; // ['', ]

// retries url of file
$post->variant['photos_url']; // ['', ]
```

Override
--------

[](#override)

*We recommend to create a `BaseFileModel` class for file on your laravel project and implement `UploadOnEloquentModel` and extends that when you need.*

```
