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:
Lo crearemos con devtools, en símbolo del sistema:
Ubiquity model user
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:
Los campos añadidos:
Generación de la clase
A continuación se muestra el modelo creado, sin los accesorios:
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}
Modificación de los modelos existentes
Ubiquity model
Sin parámetros, si existen algunos modelos, el comando model
sugiere su carga:
El modelo a conseguir ahora es el siguiente:
Seleccione la opción de menú Add/switch to model
e introduzca group
.
- Añada:
clave primaria
id
en autoincel campo
name
La relación
manyToMany
con la claseUser
: