Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
1.56% covered (danger)
1.56%
1 / 64
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
CreateUserProfileTable
1.56% covered (danger)
1.56%
1 / 64
50.00% covered (danger)
50.00%
1 / 2
5.82
0.00% covered (danger)
0.00%
0 / 1
 up
0.00% covered (danger)
0.00%
0 / 63
0.00% covered (danger)
0.00%
0 / 1
2
 down
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace App\Database\Migrations;
4
5use CodeIgniter\Database\Migration;
6
7class CreateUserProfileTable extends Migration
8{
9    public function up()
10    {
11        $this->forge->addField([
12            'id' => [
13                'type'           => 'INT',
14                'constraint'     => 11,
15                'unsigned'       => true,
16                'auto_increment' => true,
17            ],
18
19            'user_id' => [
20                'type'       => 'INT',
21                'constraint' => 11,
22                'unsigned'   => true,
23            ],
24
25            'first_name' => [
26                'type'       => 'VARCHAR',
27                'constraint' => 120,
28                'null'       => true,
29            ],
30
31            'last_name' => [
32                'type'       => 'VARCHAR',
33                'constraint' => 120,
34                'null'       => true,
35            ],
36
37            'account_type' => [
38                'type'       => 'ENUM',
39                'constraint' => ['company', 'individual'],
40                'default'    => 'individual',
41                'null'       => false,
42            ],
43
44            'organization_id' => [
45                'type'       => 'INT',
46                'constraint' => 11,
47                'unsigned'   => true,
48                'null'       => true,
49            ],
50
51            'country_code' => [
52                'type'       => 'VARCHAR',
53                'constraint' => 5,
54                'null'       => true,
55            ],
56            'phone' => [
57                'type'       => 'VARCHAR',
58                'constraint' => 30,
59                'null'       => true,
60            ],
61            'email' => [
62                'type'       => 'VARCHAR',
63                'constraint' => 255,
64                'null'       => true,
65            ],
66
67            'created_at' => [
68                'type' => 'DATETIME',
69                'null' => true,
70            ],
71
72            'updated_at' => [
73                'type' => 'DATETIME',
74                'null' => true,
75            ],
76        ]);
77
78        // =========================
79        // CLÉS
80        // =========================
81        $this->forge->addKey('id', true);
82        $this->forge->addUniqueKey('user_id');       // 1 utilisateur = 1 profil
83        $this->forge->addUniqueKey('email');          // email unique
84        $this->forge->addKey('organization_id');      // index performance
85
86        $this->forge->createTable('user_profile', true);
87    }
88
89    public function down()
90    {
91        $this->forge->dropTable('user_profile', true);
92    }
93}