--- title: Laravel [05] (Modificacions de taules) tags: daw, Laravel, migrations, M7 --- <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Licencia de Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br />Este obra está bajo una <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional</a>. [Enllaç a Hackmk.io](https://hackmd.io/@JdaXaviQ/BJJNROQmn) ## Laravel [05] (Modificacions de taules). ### Comanda __Reset__: La comanda > php artisan migrate:reset realitza un rollback de les migracions executades previament. Necessitem tornar a a cridar a: > php artisan migrate per a tornar a tenir les taules a la base de dades. ### Comanda __Refresh__: La comanda: > php artisan migrate:refresh Realitza un __reset__ (down()) i a continuació un migrate (up()). ### Modificar taules sense perdre les dades ja introduides: Les comandes _reset_ i _refresh_ tenen el greu inconvenient de que si les executem perdem el contingut desat a la base de dades, si volem modificar una taula sense perdre el seu contingut, hem d'afegir una nova migració amb les modificacions. Per exemple, si volem afegir un camp ISBN de 17 caracters de text a la taula llibres del projecte de relacions NaN, crearem una nova migració: > php artisan make:migration add_isbn_llibres Dins del mètode up(), enlloc de cridar a la funció create, utilitzarem la funció table: ```php= Schema::table('llibres', function (Blueprint $table)) { $table->string('isbn', 17)->nullable(); }); ``` I ens hem d'enrecordar de cridar a la funció inversa dins del mètode down(): ```php= Schema::table('llibres', function (Blueprint $table) { $table->dropColumn('isbn'); }); ``` ### Indicar la posició d'una columna Al modificar una migració utilitzant Schema::table i afegir una columna, aquesta s'afegeix al final de la taula. Podem canviar l'ordre de la nova columna utilitzant el mètode after: ```php= <?php //... Schema::table('llibres', function (Blueprint $table) { $table->string('isbn', 17)->nullable()->after('titol'); }); ``` I d'aquesta forma indiquem que volem la nova columna just desprès del camp titol.