Catégories
JavaScript Vue.js

Nuxt.js + Adonis.js / Chapitre 04 : Les modèles

Au menu de ce chapitre

Dans ce nouvel article de notre tutoriel sur Nuxt.js + Adonis.js, nous allons nous préoccuper des modifications nécessaires dans les modèles de l’application et plus particulièrement au modèle de la table ‘languages’.

Previously in « Nuxt.js + Adonis.js » 😀

Dans le précédent article, nous avons abordé la mise en place de la base de données avec PostgreSQL et comment utiliser les migrations de notre application Meet The Coders.

Sommaire du tutoriel

Création du modèle pour la table ‘languages’

Créons un modèle pour notre table languages, pour cela la ligne de commande nous sera encore utile :

> adonis make:model language
Création du modèle pour la table 'languages'
Création du modèle pour la table ‘languages’

Nota : Vous noterez que la table s’appelle ‘languages’ (au pluriel) et le modèle s’appelle ‘language’ au singulier. C’est une convention que l’on retrouve d’ailleurs dans Laravel.

Le fichier Models/Language.js est généré automatiquement par la ligne de commande Adonis. Nous n’avons pas besoin de le modifier pour le moment.

'use strict'

/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */
const Model = use('Model')

class Language extends Model {
}

module.exports = Language

Ajouter quelques languages dans la table Languages

En utilisant PgAdmin, je vous encourage à créer quelques languages qui nous serviront à alimenter le site pour la suite de notre tutoriel.

Vous pouvez si vous le souhaitez vous baser sur l’exemple suivant :

Insertion de quelques languages en base de données

Intégrer la relation Belongs To Many dans le modèle User.js

Nous modifions à présent le fichier modèle Models/User.js pour qu’il prenne en compte la relation avec la table Languages.

Pour cela nous nous appuyons sur la documentation officielle et nous ajoutons la fonction ‘languages’ à notre modèle User.js.

  /**
   * Define belongs to many relationships between users and
   * languages
   *
   * @method languages
   *
   * @return {Object} 
   */
  languages () {
    return this
      .belongsToMany('App/Models/Language')
      .withPivot(['level'])
  }

Comme nous ne précisons pas le nom de la table pivot utilisée dans le cadre de la relation belongs to many, la table utilisée sera celle définie par convention, c’est à dire language_users. Ce nom est la concaténation des noms des tables concernées jointes par un underscore (‘_’) et pluralisée, car là aussi il s’agit d’une convention, le nom des tables des bases de données sont au pluriel, alors que le nom du modèle est au singulier.

Dans le cas où vous souhaiteriez un nom différent pour cette table pivot, il vous suffit de le préciser en utilisant la fonction .pivotTable. Pour renommer la table en ‘user_languages’, il vous suffirait de rajouter cette ligne .pivotTable('user_languages')

La commande .withPivot nous permet de définir que nous souhaitons que soit retourné en même temps que les id des deux tables, le champ level qui nous permettra de définir pour un coder son niveau dans le langage ciblé.

Conclusion

Un chapitre bien court comparé au précédent.

Nous y avons vu :

  • la création d’un fichier modèle à partir de la ligne de commande
  • ajout de fonction dans un modèle pour établir des relations avec d’autres tables

Vous pourrez retrouver les ressources de ce tutoriel sur notre GitHub dédié au projet Meet The Coders

Dans le prochain article, nous commencerons à aborder les controllers d’Adonis.js.

Si cet article vous a plu, je vous serais super reconnaissant de lui attribuer une note.

Je vous serai également éternellement reconnaissant de vous abonner à notre newsletter.

Enfin si vous avez constaté des erreurs, des oublis ou tout autre motif pour que je sois pendu haut et court, je vous encourage à utiliser les commentaires pour me le signaler.

Nota : vous pouvez aussi utiliser les commentaires pour m’encourager 😀 !

Aidez nous à nous améliorer en évaluant cet article :
[Total: 0 Moyenne: 0]

Par HappyToDev

Absolument passionné depuis toujours par l'informatique et la programmation, je souhaite via ce blog vous faire passer un peu du savoir que j'ai accumulé depuis des années.
Et même, pourquoi pas, vous aider à faire le premier pas dans le développement web.

Vous êtes prêts ?
Alors allons y ensemble et n'oubliez pas que les débutants sont vraiment les bienvenus.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.