An open API service indexing awesome lists of open source software.

https://github.com/zanysoft/virtualcolumn

Laravel virtual column
https://github.com/zanysoft/virtualcolumn

data laravel virtual-column

Last synced: 2 months ago
JSON representation

Laravel virtual column

Awesome Lists containing this project

README

          

# Laravel - Eloquent Virtual Column

> Save additional data to virtual column

## Installation

```
composer require zanysoft/virtualcolumn
```

## Usage

Use the `VirtualColumn` trait on your model:
```php
use Illuminate\Database\Eloquent\Model;
use ZanySoft\VirtualColumn\VirtualColumn;

class MyModel extends Model
{
use VirtualColumn;

public $guarded = [];
}
```

For custom virtual column where you want to save additional data. Default column name is `data`
```php
use Illuminate\Database\Eloquent\Model;
use ZanySoft\VirtualColumn\VirtualColumn;

class MyModel extends Model
{
use VirtualColumn;

public static function getDataColumn(): string
{
return 'data'; //name of the column that stores additional data.
}
}
```

For saving data to existing database columns, by default all columns from the table are selected, except virtual column.
```php
use Illuminate\Database\Eloquent\Model;
use ZanySoft\VirtualColumn\VirtualColumn;

class MyModel extends Model
{
use VirtualColumn;

public static function getCustomColumns(): array
{
return [
'id',
'custom1',
'custom2',
];
}
}
```

Create a migration:
```php
public function up()
{
Schema::create('my_models', function (Blueprint $table) {
$table->increments('id');

$table->string('custom1')->nullable();
$table->string('custom2')->nullable();

$table->json('data');
});
}
```

And store any data on your model:
```php
$myModel = MyModel::create(['custom1' => 'custom 1', 'custom2' => 'custom 2', 'foo' => 'bar']);
$myModel->update(['custom1' => 'custom 1', 'custom2' => 'custom 2', 'foo' => 'bar']);
```