Wenn Sie mit beredten Modellen arbeiten, benötigen Sie manchmal nur die Kerndatenbankattribute ohne Beziehungen oder berechnete Eigenschaften. Die Attributestoarray -Methode von Laravel bietet eine saubere Möglichkeit, auf diese Rohmodelldaten zuzugreifen.
<!-- 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']
Lassen Sie uns ein praktisches Beispiel untersuchen, das ein Prüfungssystem für Modelländerungen implementiert:
<!-- 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); } }
Die AttributestoArray -Methode bietet direkten Zugriff auf Modellattribute, die in der Datenbank gespeichert sind, und ermöglicht es perfekt für Szenarien, in denen Sie die Rohdaten ohne zusätzliche berechnete Eigenschaften oder Beziehungen benötigen.
Das obige ist der detaillierte Inhalt vonZugriff auf Rohmodelldaten mit Attributestoarray -Methode von Laravel.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!