Maison > développement back-end > tutoriel php > Comment définir des clés primaires composites dans les modèles Laravel 5 ?

Comment définir des clés primaires composites dans les modèles Laravel 5 ?

DDD
Libérer: 2024-12-03 20:40:12
original
796 Les gens l'ont consulté

How to Define Composite Primary Keys in Laravel 5 Models?

Définition de clés primaires composites dans les modèles Laravel 5

Vous avez une table avec deux clés primaires (id et language_id) et souhaitez les inclure dans vos modèles Laravel 5. Par défaut, la clé primaire dans les modèles Laravel est « id », mais vous avez besoin que vos clés primaires soient « id » et « id_langage ».

Pour ce faire, vous pouvez utiliser un trait PHP qui adapte Eloquent à gérer les clés composites :

namespace App\Model\Traits; // Adjust this to match your model namespace!

use Illuminate\Database\Eloquent\Builder;

trait HasCompositePrimaryKey
{
    // ... (Code from provided answer)
}
Copier après la connexion

Placez ce trait dans un répertoire "Traits" sous votre répertoire de modèle principal. Ensuite, ajoutez la ligne suivante en haut de n'importe quel modèle de clé composite :

class MyModel extends Eloquent {
    use Traits\HasCompositePrimaryKey; // *** THIS!!! ***

    /**
     * The primary key of the table.
     * 
     * @var string
     */
    protected $primaryKey = array('key1', 'key2');

    // ...
}
Copier après la connexion

Notes supplémentaires :

  • Pour les versions 5.7 et supérieures de Laravel, vous n'avez pas besoin de définir la méthode getIncrementing dans votre trait.
  • Si vous rencontrez des problèmes avec Model::find, vous pouvez ajoutez la méthode find fournie dans la réponse.
  • Pour utiliser des clés composites en conjonction avec la fonctionnalité de suppression logicielle d'Eloquent, vous devrez définir les méthodes deleteAt et withTrashed.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal