Notification of features

Important Note
Aug. 1, 2017

Como hacer un CRUD en Laravel Parte 1

 

Cosas Importantes:

  1. Repositorio inicial (Branch: master):
  2. Repositorio final (Branch: final-project):
  3. Post Anterior: Como instalar laravel usando composer en Windows y correr el servidor inicial

 

¿Qué es MVC?

Model View Controller.

Model: Es una representación de la base de datos, se definen los requerimientos o campos, en la mayoría de las veces se utiliza un modelo MVC en muchos frameworks y ORM's.

View: Una vista es una interfaz, es cuando se llama un archivo donde se renderiza el HTML.

Controller: Es la parte lógica en MVC, por ejemplo para traer una lista de estudiantes.

Puede resultar un poco confuso pero poco a poco iremos viendo este Patrón de Arquitectura MVC.

 

¿Que vamos a crear?

Vamos hacer un CRUD de productos y un CRUD de usuarios. Cada vista solo puede ser accesada si el usuario está logeado, si el usuario es un "Admin" podrá tener privilegios de crear otros usuario y más.

 

Podemos correr el siguiente comando en la terminal para correr el servidor mientras desarrollamos:

php artisan serve

 

 

Configurar Base de Datos MySQL:

Solo tenemos que abrir el archivo .env desde la línea 8 a la 10 tenemos que confirar la base de datos de la siguiente manera:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=inveravel
DB_USERNAME=root
DB_PASSWORD=''

 

Crear la base de datos con Xampp:

  1. Tenems que darle "Start" en MySQL luego presionamos el botón de shell y escribimos lo siguiente:
mysql -u root

create database inveravel character set utf8;

exit

Modelo User:

Ahora tenemos que agregar un nuevo campo llamado "is_admin" dentro de App > Student.php

    protected $fillable = [
        'name', 'email', 'password', 'is_admin'
    ];

 

Ahora nos vamos agregar la columna is_admin a la migración, editamos el archivo: Database > migrations > create_users_table.php

            // ... $table->string('name');
            $table->boolean('is_admin')->default(false);
            $table->boolean('is_active')->default(true);
            // ...$table->string('email')->unique();

Para saber todos los tipos de campos de laravel pueden ver el siguiente link

 

Error al hacer migraciones con MySQL:

Laravel en su versión 5.4 tiene un problema al hacer migraciones con MySQL, en este post tiene más detalles, y en el siguiente link de StackOverflow dice como solucionarlo, sólo tenemos que editar el archivo:

App > Providers > AppServiceProvier.php y agregar la siguiente:

use Illuminate\Support\Facades\Schema;

 

Y la función boot nos tiene que dar de la siguiente manera:

    public function boot()
    {
        Schema::defaultStringLength(191);
    }

 

Con esto ya podemos correr el siguiente comando:

php artisan migrate

 

Nos tiene que salir algo así en la terminal:

Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table

 

Eso quiere decir que todo ha salido bien y ya tenemos las migraciones corriendo.

 

Ahora vamos a crear el layout principal, creamos una carpeta y un archivo dentro de: resources > views > layouts > master.blade.php

Ahora solo tenemos que copiar el contenido que está en la misma ruta del repositorio.

Luego tenemos que editar el archivo welcome.blade.php con una sola línea de código, dentro de resources > views > welcome.blade.php

@extends('layouts.master')

Con esto le decimos que welcome hereda todo el código de la view llamada master.blade.php que está dentro de la carpeta layouts

Ahora si recargamos vamos a ver la página sin estilos, para que todo quede bien sólo tenemos que agregar los siguientes archivos en la carpeta llamada "public":

adminlte/
bootstrap/
css/
datatables/
fonts/
images/
js/

// Todas estas carpetas se pueden descargar como un zip desde github
// En el botón "Clone or Download" > "Download ZIP"

 

Ahora si ingresamos a localhost:8000 veremos la nueva interfaz de AdminLTE parecida a esta:

 

CRUD en Laravel Parte 2: Login y Middleware Auth

Tags: laravel backend