Supports Laravel 10, 11, 12, and 13.
composer require stancl/virtualcolumn
Use the VirtualColumn trait on your model:
useIlluminate\Database\Eloquent\Model;
useStancl\VirtualColumn\VirtualColumn;
class MyModel extends Model
{
use VirtualColumn;
public$guarded = [];
publicstaticfunctiongetCustomColumns(): array
{
return [
'id',
'custom1',
'custom2',
];
}
}Create a migration:
publicfunctionup()
{
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(['foo' => 'bar']);
$myModel->update(['foo' => 'baz']);