Está en la página 1de 6

CRUD con Laravel

1. Iniciar la consola de comandos y ubicarse en la raiz del disco c para crear el


proyecto CRUD

C:\>composer create-project --prefer-dist laravel/laravel CRUD

2. Crear en sublime el siguiente script de base de datos y grabarlo en la carpeta


CRUD\database con el nombre de ventas.sql

drop database if exists ventas;


create database ventas;
use ventas;
create table categorias(
id int auto_increment,
categoria varchar(50),
primary key(id));
insert into categorias(categoria) values('ABARROTES');
insert into categorias(categoria) values('FRUTAS');
insert into categorias(categoria) values('LICORES');

3. Iniciar XAMPP con Apache y Mysql para ejecutar el script de la base de datos
con Phpmyadmin

4. Ingresando a la carpeta de CRUD crear el modelo Categoria

C:\>php artisan make:model Categoria

Luego abrimos con sublime el modelo dentro de la capeta CRUD\app para


agregar dentro de la clase un arreglo protegido $fillable con los campos que
vamos a utilizar. En este caso el campo categoria.

class Categoria extends Model


{
//
protected $fillable = ['categoria'];
public $timestamps=false;
}

5. Crear el controlador

php artisan make:controller CategoriaController --resource


6. Implementar los métodos del controlador

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Categoria;

class CategoriaController extends Controller


{
public function index()
{
$categorias=Categoria::all();
return view('Categoria.index',compact('categorias'));
}
public function create()
{
return view('categoria.create');
}
public function store(Request $request)
{
Categoria::create($request->all());
return redirect()->route('categoria.index');
}
public function show($id)
{
$categoria=Categoria::find($id);
return view('categoria.show',compact('categoria'));
}
public function edit($id)
{
$categoria=Categoria::find($id);
return view('categoria.edit',compact('categoria'));
}
public function update(Request $request, $id)
{
Categoria::find($id)->update($request->all());
return redirect()->route('categoria.index');
}
public function destroy($id)
{
Categoria::find($id)->delete();
return redirect()->route('categoria.index');
}
}
7. Crear la ruta que hara uso de los métodos del controlador. En la carpeta del
proyecto CRUD y dentro de la subcarpeta routes se encuentra ubicado el
archivo de rutas web.php en donde debemos especificar el nombre de la ruta y
el controlador por medio de una ruta de tipo recursos.

Route::get('/', function () {
return view('welcome');
});
Route::resource('categoria','CategoriaController');

8. Crear la plantilla para lo que necesitamos crear una nueva carpeta dentro de
CRUD\resources\views que tendra el nombre de layouts. El archivo tendra el
nombre de plantilla.blade.php

<!DOCTYPE html>
<html><head><title>CRUD con Laravel</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-
scalable=yes">
<link rel="stylesheet" href="{{ asset('css/bootstrap.min.css') }}">
<script src="{{ asset('js/bootstrap.min.js') }}"></script>
</head>
<body>
<div class="container-fluid">
@yield('contenido')
</div></body></html>

Tener en cuenta en el codigo anterior se están haciendo referencia a los


archivos de bootstrap de manera local. Es decir, las carpetas css y js deben
contener los archivos bootstrap.min.css y bootstrap.min.js respectivamente. Lo
que las carpetas css y js estén copiadas en la carpeta CRUD\public.
Si no se desea trabajar de manera local se puede hacer referencia a las ligas
de la red de contenidos de bootstrap mediante la siguiente liga.

<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css
" integrity="sha384-
ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZ
w1T" crossorigin="anonymous">

<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-
JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
crossorigin="anonymous"></script>
9. Crear las Vistas para lo que necesitamos crear una nueva carpeta dentro de
CRUD\resources\views que tendrá el nombre de categoria. A continuación,
cada uno de los archivos con extensión blade.php dentro de la carpeta
CRUD\resource\views\categoria

index.blade.php
@extends('layouts.plantilla')
@section('contenido')
<div class="row">
<div class="col-12">
<h3>Lista de Categorías</h3>
<a href="{{ route('categoria.create') }}" class="btn btn-info">Agregar</a>
<table class="table table-bordred table-striped">
<thead>
<th>Id</th>
<th>Nombre</th>
<th>Acciones</th>
</thead>
<tbody>
@if($categorias->count())
@foreach($categorias as $categoria)
<tr>
<td>{{$categoria->id}}</td>
<td>{{$categoria->categoria}}</td>
<td>
<a class="btn btn-primary" href="{{action('CategoriaController@edit',
$categoria->id)}}" >Editar</a>
<form action="{{action('CategoriaController@destroy', $categoria->id)}}"
method="post">
@csrf
<input name="_method" type="hidden" value="DELETE">
<input type="submit" value="Eliminar" class="btn btn-danger">
</form>
</td>
</tr>
@endforeach
@else
<tr>
<td colspan="3">No hay registro !!</td>
</tr>
@endif
</tbody>
</table>
</div>
</div>
@stop
create.blade.php
@extends('layouts.plantilla')
@section('contenido')
<div class="row">
<div class="col-12"><h3>Nueva Categoria</h3></div>
</div>
<div class="row">
<div class="col">
<div class="form-group">
<form method="POST" action="{{ route('categoria.store') }}">
@csrf
<label for="categoria">Categoria</label>
<input type="text" name="categoria" class="form-control"
required="">
<input type="submit" value="Grabar" class="btn btn-success">
</form>
</div>
</div>
</div>
<a href="{{ route('categoria.index')}}" class="btn btn-primary">Volver</a>
@stop

edit.blade.php
@extends('layouts.plantilla')
@section('contenido')
<div class="row">
<div class="col-12"><h3>Actualizar Categoria</h3></div>
</div>
<div class="row">
<div class="col">
<div class="form-group">
<form method="POST" action="{{ route('categoria.update',
$categoria->id) }}">
@csrf
<input name="_method" type="hidden" value="PATCH">
<label for="categoria">Categoria</label>
<input type="text" name="categoria" class="form-control"
value="{{ $categoria->categoria}}" required="">
<input type="submit" value="Grabar" class="btn btn-success">
</form>
</div>
</div>
</div>
<a href="{{ route('categoria.index')}}" class="btn btn-primary">Volver</a>
@stop
10. Establecer la conexión a la base de datos Ventas en el archivo env que se
encuentra dentro de la carpeta CRUD

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ventas
DB_USERNAME=root
DB_PASSWORD=

11. Ejecutar el sitio

En ventana de comandos
C:\CRUD>php artisan serve

En navegador
http://127.0.0.1:8000

También podría gustarte