zanysoft/virtualcolumn

Laravel - Eloquent virtual column.

1.0.1 2025-02-18 15:29 UTC

This package is auto-updated.

Last update: 2025-02-18 15:59:45 UTC


README

Save additional data to virtual column

Installation

composer require zanysoft/virtualcolumn

Usage

Use the VirtualColumn trait on your model:

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

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.

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:

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:

$myModel = MyModel::create(['custom1' => 'custom 1', 'custom2' => 'custom 2', 'foo' => 'bar']);
$myModel->update(['custom1' => 'custom 1', 'custom2' => 'custom 2', 'foo' => 'bar']);