Laravel Eloquent Orm améliore les accessoires avec la mise en cache intégrée et la valeur de la prise en charge des objets, la rationalisation des calculs complexes et la gestion structurée des données. Il en résulte un code plus propre et plus maintenable, en particulier bénéfique pour les tâches intensives en calcul ou lorsqu'ils représentent des structures de données complexes en tant qu'objets au lieu de tableaux simples.
Cette approche est particulièrement utile pour les opérations coûteuses en calcul ou lorsqu'ils représentent des structures de données complexes comme des objets appropriés plutôt que des tableaux simples.
Voici un exemple démontrant la manipulation de l'emplacement à l'aide d'objets de valeur:
<?php namespace App\Models; use App\ValueObjects\Location; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Casts\Attribute; class Store extends Model { protected function location(): Attribute { return Attribute::make( get: fn ($value) => new Location( latitude: $this->latitude, longitude: $this->longitude, address: $this->address, timezone: $this->timezone ), set: function (Location $location) { return [ 'latitude' => $location->latitude, 'longitude' => $location->longitude, 'address' => $location->address, 'timezone' => $location->timezone ]; } )->shouldCache(); } protected function operatingHours(): Attribute { return Attribute::make( get: fn () => $this->calculateHours() )->withoutObjectCaching(); } private function calculateHours() { // Dynamic calculation based on timezone and current time return $this->location->getLocalHours(); } }
Exemple Utilisation:
$store = Store::find(1); $store->location->address = '123 New Street'; $store->save(); // Access operating hours (dynamically recalculated) $hours = $store->operatingHours;
Tirer parti des capacités d'accessoires de Laravel offre des solutions efficaces pour gérer les données complexes et optimiser les performances via la mise en cache stratégique.
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!