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 :
Nous allons le créer avec les devtools, dans l’invite de commande :
Ubiquity model user
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 :
Les champs ajoutés :
Génération de la classe
Voici le modèle créé, sans les accesseurs :
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}
1namespace models;
2
3/**
4 * @table("name"=>"user")
5 */
6class User{
7 /**
8 * @id
9 * @column("id","int(11)")
10 * @validator("id",["autoinc"=>true])
11 */
12 private $id;
13
14 /**
15 * @column("firstname","varchar(30)")
16 * @validator("length",["max"=>30,"notNull"=>false])
17 */
18 private $firstname;
19
20 /**
21 * @column("lastname","varchar(45)")
22 * @validator("length",["max"=>45,"notNull"=>false])
23 */
24 private $lastname;
25
26 /**
27 * @column("firstname","varchar(150)")
28 * @validator("email",["notNull"=>false])
29 * @validator("length",["max"=>150])
30 */
31 private $email;
32}
Modification des modèles existants
Ubiquity model
Sans paramètres, si des modèles existent, la commande model
propose leur chargement :
Le modèle à réaliser est maintenant le suivant :
Sélectionner l’élément de menu Add/switch to model
et saisir group
- Ajouter :
La clé primaire
id
en tant qu’auto-incrémentle champ
name
La relation
manyToMany
avec la classeUser
: