stancl/virtualcolumn
stancl/virtualcolumn adds database-like “virtual columns” to Eloquent models, letting you define computed attributes that can be queried, sorted, and indexed as if they were real fields. Useful for JSON data, derived values, and cleaner, faster queries.
Supports Laravel 10, 11, 12, and 13.
composer require stancl/virtualcolumn
Use the VirtualColumn trait on your model:
use Illuminate\Database\Eloquent\Model;
use Stancl\VirtualColumn\VirtualColumn;
class MyModel extends Model
{
use VirtualColumn;
public $guarded = [];
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(['foo' => 'bar']);
$myModel->update(['foo' => 'baz']);
How can I help you explore Laravel packages today?