Formularios y datos Laravel 8 – Creación de las migraciones. I

Importación a la base de datos de archivos Excel y CSV. Laravel 8.

En esta primera entrada vamos a instalar la ultima version disponible de Laravel, que a dia de hoy es Laravel 8. Para continuar con este curso es necesario que tengas conocimientos en PHP, Laravel, HTML, CSS, JS, AJAX y jQuery, no hacen falta conocimientos avanzados de todo pero si soltura programando orientado a objetos y con el patron MVC.

Lo primero es tener instalado composer como habras imaginado, vamos a la consola de comandos y desde la carpeta raiza de nuestro servidor local escribimos:

composer global require laravel/installer

Despues de haberse instalado el instalador de Laravel sin salir de la consola escribimos:

laravel new example-app

Ya tendremos creado el nuevo directorio con todos los archivos y carpetas necesarios para empezar el proyecto. Como ya sabreis hay que configurar el archivo .env para la conexion a la base de datos y el archivo config/app.php para el nombre de la aplicacion y demas.

entramos en el directorio donde se creó el proyecto y vamos a empezar por crear las migraciones (migrate) de Laravel pata la creación de las tablas de la BBDD, de esta manera si hemos de resetear toda la base de datos o empezar de nuevo o que otra persona siga nuestro proyecto tenga la estructura de la base de datos del proyecto y a demás poder crearlas desde la linea de comandos. Vamos con la primera migración, ya que la de la tabla users ya viene hecha por defecto en Laravel y yo personalmente la aprovecho. escribimos

php artisan make:migration AnounciosTable

Con esto se creará nuestro archivo en la carpeta de database/migrations. En este archivo creamos la estructura para la tabla donde irán los anuncios. El archivo quedaría así:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateAnouncesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('anounces', function (Blueprint $table) {
            $table->engine = 'InnoDB';
            $table->increments('id');
            $table->unsignedInteger('user_id');
            $table->string('type_rent');
            $table->float('price', 8, 2);
            $table->string('min_time_ocupation')->nullable(true);
            $table->string('payment_period')->nullable(true);
            $table->integer('meter2')->nullable(true);
            $table->integer('num_roomms_for_rent')->nullable(true);
            $table->integer('num_rooms')->nullable(true);
            $table->integer('num_baths')->nullable(true);
            $table->float('deposit', 8, 2)->nullable(true);
            $table->date('available_date')->nullable(true);
            $table->string('titulo', 255)->nullable(true);
            $table->mediumText('descripcion')->nullable(true);
            $table->integer('num_people_in')->nullable(true);
            $table->string('people_in_job')->nullable(true);
            $table->string('people_in_sex')->nullable(true);
            $table->boolean('people_in_tabaco')->nullable(true);
            $table->boolean('people_in_pet')->nullable(true);
            $table->string('lookfor_who_job')->nullable(true);
            $table->string('lookfor_who_sex')->nullable(true);
            $table->boolean('lookfor_who_tabaco')->nullable(true);
            $table->boolean('lookfor_who_pet')->nullable(true);
            $table->string('cauntry_rent')->nullable(true);
            $table->string('province_rent')->nullable(true);
            $table->string('city_rent')->nullable(true);
            $table->string('street_rent')->nullable(true);
            $table->string('adress_rent')->nullable(true);
            $table->string('num_street_rent')->nullable(true);
            $table->string('flat_street_rent')->nullable(true);
            $table->string('cp_rent')->nullable(true);
            $table->integer('phone', 10)->nullable(true);
            $table->boolean('funiture')->nullable(true);
            $table->boolean('ascensor')->nullable(true);
            $table->boolean('calefaction')->nullable(true);
            $table->boolean('balcon')->nullable(true);
            $table->boolean('terraza')->nullable(true);
            $table->boolean('gas')->nullable(true);
            $table->boolean('swiming')->nullable(true);
            $table->boolean('internet')->nullable(true);
            $table->boolean('washing_machine')->nullable(true);
            $table->boolean('fridge')->nullable(true);
            $table->boolean('kitchen')->nullable(true);
            $table->boolean('near_bus')->nullable(true);
            $table->boolean('near_underground')->nullable(true);
            $table->boolean('near_tren')->nullable(true);
            $table->boolean('near_school')->nullable(true);
            $table->boolean('near_airport')->nullable(true);
            $table->mediumText('observations')->nullable(true);
            $table->string('foto1')->nullable(true);
            $table->string('foto2')->nullable(true);
            $table->string('foto3')->nullable(true);
            $table->string('foto4')->nullable(true);
            $table->string('foto5')->nullable(true);
            $table->timestamps();
            $table->foreign('user_id')->references('id')->on('users');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('anounces');
    }
}