okanzen1 Paketi kurduktan sonra hangi model için kullanmak istiyorsanız onun tablosuna bir migration ile ekleme yapıyorsunuz. Mesela User modeli için yapalım:
Schema::table('users', function (Blueprint $table) {
$table->schemalessAttributes('meta');
});
Sonra bir trait oluşturuyorsunuz. app klasörü içinde istediğiniz yerde oluşturabilirsiniz. Dokümanda app/Models/Concerns içinde oluşturmuş, orası uygun:
app/Models/Concerns/HasSchemalessAttributes.php
namespace App\Models\Concerns;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
use Spatie\SchemalessAttributes\Casts\SchemalessAttributes;
trait HasSchemalessAttributes
{
public function initializeHasSchemalessAttributes()
{
$this->casts['meta'] = SchemalessAttributes::class;
}
public function scopeWithExtraAttributes(): Builder
{
return $this->meta->modelScope();
}
}
Daha sonra bu traiti User modeline ekliyorsunuz.
class User extends Model
{
use HasSchemalessAttributes;
// ...
}
Artık kullanabilirsiniz:
$user = User::findOrFail(1);
$user->meta->vehicle = [
'plate' => '33MA245',
'color' => 'White'
];
$user->save();
$user->meta->vehicle->color; // White