Lorsque vous travaillez avec des modèles éloquents, vous avez parfois besoin des attributs de base de données de base sans relations ni propriétés calculées. La méthode AttributestoArray de Laravel fournit un moyen propre d'accéder à ces données de modèle brutes.
<!-- Syntax highlighted by torchlight.dev -->// Basic usage $user = User::first(); $attributes = $user->attributesToArray(); // Returns raw database attributes // ['id' => 1, 'name' => 'John', 'email' => 'john@example.com']
Explorons un exemple pratique implémentant un système d'audit pour les modifications du modèle:
<!-- Syntax highlighted by torchlight.dev --><?php namespace App\Models; use App\Models\AuditLog; use Illuminate\Database\Eloquent\Model; class AuditableModel extends Model { protected static function booted() { static::updated(function ($model) { $original = $model->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); } }
La méthode AttributestoArray fournit un accès direct aux attributs de modèle tels que stockés dans la base de données, ce qui le rend parfait pour les scénarios où vous avez besoin des données brutes sans propriétés ou relations calculées supplémentaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!