Héritage de modèle dans Laravel
P粉990008428
P粉990008428 2024-01-10 17:16:44
0
1
364

Supposons que j'ai la classe suivante :

  • Animaux
  • chien
  • Golden Retriever
  • Teckel

Je veux Animal comme classe de base, Dog comme sous-classe d'Animal et les deux autres comme sous-classes de Dog.

Quelles sont les meilleures pratiques dans Laravel ? Créer quatre modèles et quatre tableaux distincts ? Ou créez deux tables, une pour les animaux et une pour les chiens.

De plus, si chaque animal avait une fonction "makeSound", je pourrais l'implémenter à l'aide d'une interface, puis supposer que le chien aboierait, mais différentes races de chiens pourraient avoir des remplacements qui les obligeraient à faire quelque chose de légèrement différent. Ce qui me laisse perplexe, c'est comment comprendre ce qu'est un Golden Retriever ?

Si c'était juste un animal, je pourrais faire ça

$animals = Animal::get();

Mais je ne sais pas comment :

$daschunds = Daschund::get();

Tout conseil/lecture sur ce sujet serait grandement apprécié. J'ai quelques connaissances en programmation orientée objet mais pas beaucoup en environnement Laravel. J'ai lu quelques articles mais rien de spécifique à Laravel.

P粉990008428
P粉990008428

répondre à tous(1)
P粉648469285

Étant donné que tous les modèles du plan sont des animaux, vous devez absolument disposer d'une table d'animaux et d'un modèle animal.

Maintenant, si votre modèle plus spécifique se comporte différemment d'un animal en général, vous pouvez hériter du modèle afin que ses méthodes gèrent les choses correctement. Autrement dit, si vos différences concernent uniquement PHP, vous pouvez alors faire en sorte que les modèles héritent les uns des autres, faisant référence aux mêmes tables, et votre application jugera quand et comment fonctionner avec différents modèles en fonction de certains critères.

Si votre base de données présente également des différences, c'est-à-dire que dans le cas des chiens, vous avez besoin d'informations supplémentaires, vous pouvez alors créer une table attributaire pour les chiens qui possède une clé étrangère vers la table des animaux.

Enfin, vous pouvez décider d'utiliser des tableaux différents pour chaque modèle, auquel cas il serait préférable d'implémenter une classe d'animaux abstraite et de laisser la classe de modèles animaux plus concrète l'étendre à sa manière, afin de pouvoir combiner les éléments communs. le contenu est implémenté dans la classe animale abstraite.

Quant à laquelle des méthodes ci-dessus est la meilleure, cela dépend en grande partie de votre situation spécifique.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal