Implémentation de l'héritage de table unique dans Laravel à l'aide d'Eloquent
Scénario :
Vous avez un modèle nommé Post et que vous souhaitez diviser les publications en deux types : articles et questions, en utilisant l'héritage.
Héritage de table unique
L'héritage de table unique implique le maintien de tous les types dans la même table , avec une colonne pour les distinguer. Bien que cette approche puisse être plus simple, elle peut entraîner de nombreuses valeurs NULL en raison de colonnes qui ne sont pas applicables à tous les types.
Héritage multi-tables
Multi table l'héritage est une approche plus propre qui divise les données en plusieurs tables. Une colonne postable indique le type de publication et un postable_id fait référence à la clé primaire dans la table correspondante.
Implémentation de l'héritage multi-tables dans Eloquent
Modèle de publication :
Ajouter une relation postable au modèle Post, qui sera une relation polymorphe :
<code class="php">class Post extends Eloquent { public function postable() { return $this->morphTo(); } }</code>
Modèles de questions et d'articles :
Créez des modèles distincts pour chaque type de publication et établissez la relation avec le modèle Post :
<code class="php">class Question extends Post { public function post() { return $this->morphOne('Post', 'postable'); } }</code>
<code class="php">class Article extends Post { public function post() { return $this->morphOne('Post', 'postable'); } }</code>
Utilisation :
Créez une nouvelle question :
Recommandation :
Pour une implémentation plus conviviale, il est recommandé de consolider la logique de création de modèle dans des fonctions réutilisables au sein de chaque classe de modèle.
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!