Creación de modelos desde cero

Nota

A menudo es preferible diseñar conceptualmente una base de datos y luego generar los modelos a partir de la base de datos existente.
La creación de modelos desde cero sólo es adecuada para casos sencillos, y no permite saltarse una fase de conceptualización.

Creación de un modelo

Considere el siguiente modelo que representa a un usuario:

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

Lo crearemos con devtools, en símbolo del sistema:

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

Nota

Una clave primaria se añade automáticamente en la creación como autoincremento.
Es posible cambiar el nombre por defecto de la clave primaria al lanzar el comando :

Ubiquity model user -k=uid

Añadir campos

Seleccione la opción de menú Add fields:

  • Introduzca los nombres de los campos separados por una coma:

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

Los campos añadidos:

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

Generación de la clase

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

A continuación se muestra el modelo creado, sin los accesorios:

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}

Modificación de los modelos existentes

Ubiquity model

Sin parámetros, si existen algunos modelos, el comando model sugiere su carga:

../../_images/reload.png

El modelo a conseguir ahora es el siguiente:

../../_images/group_users.png

Seleccione la opción de menú Add/switch to model e introduzca group.

../../_images/switch-to-group.png
Añada:
  • clave primaria id en autoinc

  • el campo name

  • La relación manyToMany con la clase User :

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