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']);
Top comments (0)