Project

General

Profile

Migrazione from Lumen to Laravel » History » Version 18

Fluidone Morinmoto, 05/29/2021 02:42 PM

1 1 Fluidone Morinmoto
h1. Migrazione from Lumen to Laravel
2
3
Rinominare la cartella dell'applicazione:
4
5
<pre>
6
$ mv panizahomebrew_backend panizahomebrew_backend_lumen
7
</pre>
8 2 Fluidone Morinmoto
9
Create un nuovo progetto Laravel
10
11
<pre>
12
$ composer create-project laravel/laravel panizahomebrew_backend
13
</pre>
14 3 Fluidone Morinmoto
15 4 Fluidone Morinmoto
Entrare nella cartella del nuovo progetto 
16
17
<pre>
18
$ cd panizahomebrew_backend
19
</pre>
20
21 17 Fluidone Morinmoto
Installare il package doctrine/dbal
22
23
<pre>
24
$ composer require doctrine/dbal
25
</pre>
26
27 3 Fluidone Morinmoto
Installare il package dei permessi
28
29
<pre>
30
$ composer require spatie/laravel-permission
31
</pre>
32 5 Fluidone Morinmoto
33 6 Fluidone Morinmoto
Creare il file .env partendo dal .env.example di Laravel e copiarci i valori del file .env originale del progetto Lumen.
34
35
Copiare i file delle migration che abbiamo già scritto nella cartella delle migration del nuovo progetto Laravel
36
37
<pre>
38
$ cp ../panizahomebrew_backend_lumen/database/migrations/* database/migrations/
39
</pre>
40 7 Fluidone Morinmoto
41
Verificare di non avere a database delle tabelle con i seguenti nomi:
42
43 18 Fluidone Morinmoto
* failed_jobs 
44
* model_has_permissions;
45
* model_has_roles;
46 1 Fluidone Morinmoto
* password_resets;
47 18 Fluidone Morinmoto
* permissions;
48
* roles;
49
* role_has_permissions;
50
* users;
51 7 Fluidone Morinmoto
52
In tal caso creare una migration per rinominarle temporaneamente, se non vogliamo cancellarle:
53
54
<pre>
55
$ php artisan make:migration rename_tables_pre_laravel_migration
56 8 Fluidone Morinmoto
</pre>
57 11 Fluidone Morinmoto
58 10 Fluidone Morinmoto
In questo modo viene creata una migration con il timestamp odierno, che, per come funzionano le migration di Laravel, verrà eseguita per ultima. Modificare il filename in modo che sia il primo in ordine alfabetico e che venga eseguito per primo in modo da evitare conflitti.
59 1 Fluidone Morinmoto
60 11 Fluidone Morinmoto
<pre>
61
$ mv database/migrations/2021_05_29_121459_rename_tables_pre_laravel_migration.php database/migrations/2000_01_01_120000_rename_tables_pre_laravel_migration.php
62
</pre>
63 12 Fluidone Morinmoto
64 11 Fluidone Morinmoto
Scrivere la migration prendendo ad esempio quanto segue:
65
66 10 Fluidone Morinmoto
<pre>
67
<?php
68
69
use Illuminate\Database\Migrations\Migration;
70
use Illuminate\Database\Schema\Blueprint;
71
use Illuminate\Support\Facades\Schema;
72
73
class RenameTablesPreLaravelMigration extends Migration
74
{
75 1 Fluidone Morinmoto
    private $tables_to_rename = [
76 15 Fluidone Morinmoto
        'users'                 =>  'users_phb'
77 10 Fluidone Morinmoto
        // Altre tabelle tra quelle elencate qua sopra
78
    ];
79
    /**
80
     * Run the migrations.
81
     *
82
     * @return void
83
     */
84
    public function up()
85
    {
86
        foreach ($this->tables_to_rename as $old_name => $new_name) {
87
            print_r(
88
                sprintf("\nRename '%s' => '%s'..", $old_name, $new_name)
89
            );
90
            Schema::rename($old_name, $new_name);
91
        }
92
        print_r("\n[ OK ]\n");
93
    }
94
95
    /**
96
     * Reverse the migrations.
97
     *
98
     * @return void
99
     */
100
    public function down()
101
    {
102
        foreach ($this->tables_to_rename as $old_name => $new_name) {
103 8 Fluidone Morinmoto
            Schema::rename($new_name, $old_name);
104
        }
105
    }
106
}
107 9 Fluidone Morinmoto
</pre>
108
109
Pulire la cache di artisan per sicurezza
110
111
<pre>
112
$ php artisan config:clear
113 13 Fluidone Morinmoto
</pre>
114
115
Se non si vuole reimpostare il repository git, copiare la cartella @.git@ del progetto Lumen nel nuovo progetto Laravel
116
117
<pre>
118
$ cp -R ../panizahomebrew_backend_lumen/.git ./
119 14 Fluidone Morinmoto
</pre>
120
121 16 Fluidone Morinmoto
Eventualmente adeguare il file @.gitignore@ con ulteriori file da ignorare (in questo caso non è servito)
122
123
Eseguire le migrations
124
125
<pre>
126
$ php artisan migrate
127
</pre>
128
129 1 Fluidone Morinmoto
Copiare eventuali file precedentemente creati nella cartella @app/@ dal progetto Lumen al nuovo progetto Laravel.