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
- Host: GitHub
- URL: https://github.com/zanysoft/virtualcolumn
- Owner: zanysoft
- License: mit
- Created: 2025-02-18T15:23:19.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-18T15:54:11.000Z (over 1 year ago)
- Last Synced: 2025-02-18T16:20:28.971Z (over 1 year ago)
- Topics: data, laravel, virtual-column
- Language: PHP
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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']);
```