Clés composites dans Laravel 5 : Explorer une solution
Le modèle de Laravel suppose par défaut une seule clé primaire nommée « id ». Cependant, il existe des scénarios dans lesquels plusieurs colonnes peuvent servir de clé composite. Cet article explore une technique pour relever ce défi.
Comprendre les clés composites
Le problème survient lorsqu'une table utilise deux colonnes ou plus comme clé primaire, telle que ' id' et 'langue_id'. Pour modéliser cela dans Laravel, nous devons établir un moyen de gérer la clé composite.
Utilisation d'un trait PHP
Nous introduisons un trait PHP appelé HasCompositePrimaryKey pour améliorer l'efficacité d'Eloquent. capacités de gestion des clés composites :
namespace App\Model\Traits; // Import necessary classes trait HasCompositePrimaryKey { public function getIncrementing() { return false; } protected function setKeysForSaveQuery(Builder $query) { foreach ($this->getKeyName() as $key) { $query->where($key, '=', $this->$key); } return $query; } protected static function find($ids, $columns = ['*']) { $me = new self; $query = $me->newQuery(); foreach ($me->getKeyName() as $key) { $query->where($key, '=', $ids[$key]); } return $query->first($columns); } }
Intégration avec le Modèle
Pour intégrer le trait à un modèle de clé composite, ajoutez ce qui suit :
// Define the primary key protected $primaryKey = ['id', 'language_id']; // Include the trait use Traits\HasCompositePrimaryKey;
Mises à jour supplémentaires
Pour des fonctionnalités améliorées , deux mises à jour supplémentaires sont fournies :
Conclusion
En utilisant le trait fourni, nous pouvons gérer efficacement les clés composites dans les modèles Laravel 5. Cette technique permet aux développeurs de modéliser de manière transparente des bases de données avec plusieurs colonnes de clé primaire.
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!