Accessing Raw Model Data with Laravel's attributesToArray Method
When working with Eloquent models, sometimes you need just the core database attributes without relationships or computed properties. Laravel's attributesToArray method provides a clean way to access this raw model data. // Basic usage $user = User::first(); $attributes = $user->attributesToArray(); // Returns raw database attributes // ['id' => 1, 'name' => 'John', 'email' => 'john@example.com'] Let's explore a practical example implementing an audit system for model changes:
When working with Eloquent models, sometimes you need just the core database attributes without relationships or computed properties. Laravel's attributesToArray method provides a clean way to access this raw model data.
// Basic usage
$user = User::first();
$attributes = $user->attributesToArray();
// Returns raw database attributes
// ['id' => 1, 'name' => 'John', 'email' => 'john@example.com']
Let's explore a practical example implementing an audit system for model changes:
getOriginal();
$current = $model->attributesToArray();
// Compare only actual database attributes
$changes = array_diff($current, $original);
if (!empty($changes)) {
AuditLog::create([
'model_type' => get_class($model),
'model_id' => $model->id,
'original' => json_encode($original),
'changes' => json_encode($changes),
'user_id' => auth()->id(),
'timestamp' => now()
]);
}
});
}
}
class Product extends AuditableModel
{
protected $appends = ['formatted_price', 'stock_status'];
public function category()
{
return $this->belongsTo(Category::class);
}
public function getFormattedPriceAttribute()
{
return "$" . number_format($this->price / 100, 2);
}
}
The attributesToArray method provides direct access to model attributes as stored in the database, making it perfect for scenarios where you need the raw data without additional computed properties or relationships.
The post Accessing Raw Model Data with Laravel's attributesToArray Method appeared first on Laravel News.
Join the Laravel Newsletter to get all the latest Laravel articles like this directly in your inbox.
What's Your Reaction?