Création de modèles à partir de zéro

Note

Il est souvent préférable de concevoir une base de données de manière conceptuelle, puis de générer les modèles à partir de la base de données existante.
La création de modèles à partir de rien n’est adaptée qu’aux cas simples, et ne permet pas de sauter une phase de conceptualisation.

Création d’un modèle

Considérons le modèle suivant représentant un utilisateur :

../../_images/user-model.png

Nous allons le créer avec les devtools, dans l’invite de commande :

Ubiquity model user
../../_images/create-model.png

Note

Une clé primaire est automatiquement ajoutée à la création en tant qu’auto-incrément.
Il est possible de changer le nom par défaut de la clé primaire en lançant la commande :

Ubiquity model user -k=uid

Ajout de champs

Sélectionner l’élément de menu Add fields :

  • Entrez les noms des champs séparés par une virgule :

../../_images/field-types.png

Les champs ajoutés :

../../_images/fields-added.png

Génération de la classe

../../_images/generate-class.png

Voici le modèle créé, sans les accesseurs :

app/models/User.php
 1namespace models;
 2
 3use Ubiquity\attributes\items\Table;
 4use Ubiquity\attributes\items\Id;
 5
 6#[Table('user')]
 7class User{
 8
 9   #[Id]
10   #[Column(name: "id",dbType: "int(11)")]
11   #[Validator(type: "id",constraints: ["autoinc"=>true])]
12   private $id;
13
14   #[Column(name: "firstname",dbType: "varchar(30)")]
15   #[Validator(type: "length",constraints: ["max"=>30,"notNull"=>false])]
16   private $firstname;
17
18   #[Column(name: "lastname",dbType: "varchar(45)")]
19   #[Validator(type: "length",constraints: ["max"=>45,"notNull"=>false])]
20   private $lastname;
21
22   #[Column(name: "email",dbType: "varchar(150)")]
23   #[Validator(type: "email",constraints: ["notNull"=>true])]
24   #[Validator(type: "length",constraints: ["max"=>150])]
25   private $email;
26}

Modification des modèles existants

Ubiquity model

Sans paramètres, si des modèles existent, la commande model propose leur chargement :

../../_images/reload.png

Le modèle à réaliser est maintenant le suivant :

../../_images/group_users.png

Sélectionner l’élément de menu Add/switch to model et saisir group

../../_images/switch-to-group.png
Ajouter :
  • La clé primaire id en tant qu’auto-incrément

  • le champ name

  • La relation manyToMany avec la classe User :

../../_images/manytomany-users.png