CRUD con Laravel desde cero

Page 1

HACER UN CRUD CON LARAVEL DESDE CERO.

CONTERNIDO : [1] Instalaciรณn . [2] Rutas y Vistas en Laravel. [3] Bases de Datos dentro de Laravel. [4] Blade(Motor de Plantillas). [5] CRUD. [6] Conclusiones. [7] Paginas de Referencia.

TEMA 1 INSTALACIร N

CREADO POR : MA. GUADALUPE CASTRO BRITO


HACER UN CRUD CON LARAVEL DESDE CERO.

Laravel es un framework para lenguaje PHP, creado con el propósito de generar código limpio y comprensible. Esta herramienta esta pensada para facilitar al desarrollador la creación de aplicaciones web. Una de las principales, ventajas de un framework como este, es que brindan la oportunidad de combinar lenguaje(en este caso PHP) de programación de programación con código html. Ademas la plantillas son una de las técnicas que mejoran la eficiencia de las aplicaciones ya que brindan la oportunidad de reutilizar código repetido.


1) Requerimientos 2) Descarga 3) Comprobar Instalación

TEMA 1 INSTALACIÓN

[1] INSTALACIÓN PASO A PASO


R E Q U E R I M I E N T O S D E S I S T E M A MY SQL COMPOSER SERVIDOR WEB PHP 5.5.9 LAS EXTENSIONES DE PHP: OPENSSL MBSTRING TOKENIZE

DESCARGA : LARAGON ,PARA FACILITAR EL USO E INSTALACIÓN DEL FRAMEWORK LARAVEL

Figura 1 Pagina de Laragon

¿Por que Larago ? Laragon tiene un entorno aislado con sistema operativo y ofrece todo lo que necesita para construir aplicaciones web modernas. Es portátil y muy flexible. Puede mover la carpeta de Laragon (a otros discos, a otros equipos portátiles, sincronizar con la nube, ...) y las magias de Laragon están con usted.

INICIEMOS LA INSTALACIÓN Para iniciar es necesario instalar Laragon ingresando a la pagina de, es sugerible descargar la versión full ya sea mas Apache o con Nginx (FIGURA 1). Una vez que descargues Laragon, se mostrara una pestalla de instalación(Figura 2) para iniciar el proceso solo da click en el botón siguiente, la instalación comenzara. Ahora solo queda espera a que cargue.

Figura 2 Ventana de instalación


C O M P R O B A R I N S T A L A C I Ó N ANTES DE PODER INICIAR DAR LOS PRIMEROS PASOS EN LARAVEL ES NECESARIO COMPROBAR QUE LA INFLACIONISTA FUE EXITOSA

A

[1] Abre Laragon e ingresa a la terminal, dando click en el botón terminal. Una vez dentro asegurate de que estar en C:/Laravel/www .

[2] Comprueba que esta instalado git, ingresando 'git' en la terminal y posteriormente 'composer', despues escribe para verificar que la version php se mayor a la 5.4 (Probablemente sea la (7.1).

[3] Para comprobar el funcionamiento crearemos una nueva aplicación,podemos usar el comando : composer create-project laravel/laravel nombreApp O bien hacer uso del intalador creado por laravel, para ello es necesario(por unica vez) ejecutar el comando: composer global require laravel/installer


Figura 1 Crer nueva app

CREAR UNA APLICACIÓN Una vez terminada la instalación del punto anterior es posible pasar aqui.

[1] Usa el comando "laravel new miPagina" (Figura 1) para crear una nueva aplicación. La primera vez que hagas esto, puede que tomo unos segundos de más.

[2] Para poderla abrir abre el navegador y escribe miPagina.dev. Si al hacer esto te aparece la ventana del la figura 2 fue exitosa, ve a Laragon y recarga el servidor. En caso de no funcionar regresa y verifica que hayas seguido correctamente los pasos o bien revisa que el puerto en que esta trabajando tu servidor no este ocupado.

Figura 2 Visualizar pagina

[3] Entra a : Laravel /www /miPagina/rosources/views Una vez dentro abre, con tu editor de texto favorito el archivo que se encuentra dentro cambia el titulo Laravel por uno de tu elección , guarda cambios y regresa al navegar y abre nuevamente tu aplicación. Si te aparece algo similar a la imagen 3, podemos continuar al siguiente apartado.

Figura 3 Visualizar pagina


1)Rutas 2)Pasar parámetros en Rutas 3) Uso de vistas

TEMA 2 RUTAS Y VISTAS

[ 2 ] RUTAS Y VISTAS EN LARAVEL


RUTAS

Uso de Rutas Las rutas permanenten especificar que paginas se deben mostrar el pantalla, según la dirección , por ejemplo: www.miPagina.com/home Esta dirección debería mostrar la pagina que contiene el home . Para implementar rutas se ben seguir los siguientes pasos:

01

Entra a la carpeta routes , dentro busca el archivo web.php.

02

Borra todo el contenido y abre sintaxis de php. <?php

crearemos la primera 03 Ahora ruta, la cual ira a la pagina principal (www.miPagina.com)

FIGURA 1

crear rutas usamos la función 04 Para Route, la cual recibe como entrada el nombre(/galeria) y una función(Ejemplo en Figura1). Sintaxis Route:: get ('nombre', function(){ returne "Mensaje en pagina" })

/* '/ ' Solo se usa la pagina principal.*/

/* galería es el nombre destino */

el navegador y escribe: 05 Abre www.miPagina.com www.miPagina.com/galeria Si ningun error aparece, tu ruta se genero correctamente.

FIGURA 2


RUTAS

Rutas con Parámetros 01 02

Volvemos a escribir la función Route, haciendo la siguiente modificación. {nombre} --> Es el parametro que esperamos recibir. Abre el navegador--> ingresa la ruta ,sin olvidar pasar el nombre

Si no pasas el parámetro nombre esto te genera un error ya que ,según el código anterior, el parámetro es forzoso.Sin embargo, podemos usar el signo '?' para indicar que el parámetro puede o no ser pasado . También es posible definir que puede y que no puede ser el parámetro esperado, para eso usamos expresiones regulares.

Una ruta puede recibir parámetros de tal manera que el usuario escribiria : www.miPagina.com/home/miNombre Para permitir esto, es necesario seguir estos pasos:

Route::get("nosotros/{nombre}"function(){ returne "Hola $nombre " })

www.miPagina.com/nosotros/nombre

el símbolo '?' , para indicar que 03 Añade el parámetro puede no ser ingresado.

04

Dentro de la función llama a la variable y asignarle un valor(este se le asignara si el parámetro no es pasado en el navegador).

-> where(nombre,'regExp'); 05 Agrega Para validar el parametro de entrada. FIGURA 1

---> Expresión Regular , indica que el parámetro nombre solo puede estar formados por múltiples letras de la a-z y A-Z

FIGURA 2: Ruttas nombrdas


1)Diseño 2)Migrate 3)Controller

TETEMA 3: BASE DE DATOS

[ 3 ] USO Y MANEJO DE BASES DE DATOS DENTRO DE LARAVEL


DASE DE DATOS

Diseño de la base de Datos

Por defecto, Laravel tiene cargados archivos, que facilitan la conexión a bases de datos. Estos, nos permite conectarnos, a algunas bases, con tan solo poner algunos datos, como nombre (de la base de datos), puerto en el cual se debe contar, nombre de usuario y password. Entre estas permitidas se encuentra MySQL la cual usaremos para el desarrollo de nuestro CRUD.

01

Antes de empezar es necesario tener claramente definido el modelo de nuestra base de datos, para este ejemplo usaremos el siguiente modelo

FIGURA 1

02

Una vez definido nuestro modelo podemos empezar. Para establecer la conexión es necesario entrar a la carpeta config -> database.php. Dentro del archivo buscamos mysql y establecemos los siguientes valores [FIGURA1]

'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'db'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ],


RUTAS

Migraciones en Laravel Las migraciones son una serie de archivos y clases php cuya función es equivalente a la de un controlador de versiones de base de datos. Las migraciones permiten crear, modificar y eliminar tablas o columnas, sin necesidad de salir de nuestro editor de texto. La principal ventaja de usar migraciones vs hacer una DB convencional, es la portabilidad, ya que al hacerlo de esta manera podemos compartir con mayor facilidad nuestros proyectos.

01

Abrir la terminal y escribir el comando

php artisan make:migration nombre_migracion create=nombre_tabla

02

Abrimos nuestro editor de texto y buscamos dentro de la carpeta databa -> migration la migración con el nombre le dimos .

03

Abrimos nuestro archivo y veremos que por defecto ya incluye dos métodos (up Route::get("nosotros/{nombre}"function(){ y down).El método Up se usará para la returne $nombre creación de "Hola nuestra tabla y "el método }) rollback. down para hacer Además, dentro de Up veremos que ya existen 2 campos , uno es para establecer en la tabla un id autoincrementa y el otro almacena la fecha en la cual se creo y modifico una fila de la tabla, lo cual puede ser útil para auditoria, por ello los dejaros y escribiremos entre los dos nuestro campos con el formato :

$table->tipoDato('nombre_Campo'); public function up() { Schema::create('tours', function (Blueprint $table) { $table->increments('id'); $table->string('nombre'); $table->string('destino'); $table->float('precio'); $table->text('descripcion'); $table->date('fechai'); $table->date('fechaf'); $table->timestamps(); }); }

Metodo Up de la tabla Tour


MIGRACIONES

Migraciones en Laravel Metodo Up de la tabla actividades public function up() { Schema::create('actividades', function (Blueprint $table) { $table->increments('id'); $table->string('nombre'); $table->string('lugar'); $table->text('descripcion'); $table->timestamps(); }); }

Metodo Up de la tabla tour_act public function up() { Schema::create('tourAct', function (Blueprint $table) { $table->increments('id'); $table->integer('fk_tour')->unsigned();

04

Una vez generada una migración por cada tabla, volvemos a la consola y ejecutamos el comando[A], el cual permitirá cargar nuestras tablas a la base de datos:

[A] λ php artisan migrate nuestra HeidiSQL y verificamos 05 Abrimos que la base se haya creado y que todas la tablan estén dentro de esta. En caso de que se nos haya pasado un dato, el nombre este mal, etc, podríamos hacer uso de [B] o [C] [B] λ php artisan migrate- roolback -> Revierte la migración. [C] λ php artisan migrate- refresh -> Ejecuta un roolback y posteriormente vuelve cargar la migración.

$table->foreign('fk_tour')->references('id') ->on('tours'); $table->integer('fk_act')->unsigned(); $table->foreign('fk_act')->references('id') ->on('actividades'); $table->date('fecha'); $table->string('duracion'); $table->timestamps(); }); }

Base de datos


1)Crear Plantillas 2)Uso de Plantillas

TEMA 4 : PLANTILLAS

[4] BLADE EL MOTOR DE PLANTILLAS DE LARAVEL


BLADE

Plantillas con Blade Laravel se basa en el concepto de código limpio y ordenado. Como te habrás dado cuenta en muchas ocasiones cuando diseñamos una página hay código que se repite, por ejemplo, los menús el footer, entre otros. Para evitar esto Laravel hace uso de Blade, usar esta herramienta consta de dos sencillos paso 1) Crear la plantilla 2) Implantar la plantilla a cada vista.

Cración de plantilla

layout.blade.php

Uso de plantilla

PLANTILLAS

01

En el editor de texto abre la carpeta [ resources -> views ] dentro crea un nuevo archivo con extencion [.blade.php] layout. blade. php

el código que se repetirá , por 02 Escribe ejemplo el menú , abre un dive y en el contenido de este inserta la etiqueta: @yield('contenido')

03

Crea un nuevo archivo con la misma extención [home.blade.php] en el archivo coloca las etiquetas :

@extends('layout') @section('contenido') //Aqui ira el contenido unico de la pag home @stop

home.blade.php


[ 5 ] CRUD

TEMA 5 : CRUD

1)Creación del controller 2)Create 3)Red 4)Update 5)Delete


BLADE

Uso de Controllers

OME

Cración de plantilla

Los Controladores puede agrupar las peticiones HTTP relacionada con la manipulación lógica en una clase. Los Controladoresnormalmente se almacenan en el directorio de aplicación app/Http/Controllers/.

crear un controlador podemos 01 Para ejecutar por consola: php artisan make:controller nombre-controlador --resource a la carpeta app/Http/Controllers/ y 02 Ve busca el archivo, ábrelo y te darás cuenta que esta clase ya cuenta con algunos métodos los cuales usaremos para nuestras peticiones[FIGURA1].

Uso DEFINICIÓN de Controllers DE REST

Función : Describir cualquier interfaz entre sistemas que utilice directamente HTTP para obtener datos o indicar la ejecución de operaciones sobre los datos, en cualquier formato (XML, JSON, etc).

FIGURA 1 Controller

REST


CRUD

---> CREATE 01

Dentro de la carpeta view crearemos una carpeta Tours, ahí almacenaremos todas las vistas usadas para peticiones.

RUTA : /tours/créate Para la tabla Tours

Controller Siguiendo la tabla anterior, buscamos el método créate dentro nuestro controller y lo único que debemos hacer es aquí es devolver la vista que contiene el formulario de creación, para el modelo que usamos necesitaremos dos, uno que permita crear un tour y otro que permita crear actividades para este.

Route::get('/Tourss/create',['as'=> 'tours.create', 'uses'=>'ToursController@create']); Para la tabla Actividades

Route::get('/Tourss/{id}/createA',['as'=> 'tours.createA', 'uses' =>'ToursController@createA']);

Crate para la tabla Tour

public function create() { return view('ToursA.create'); }

Uso de Controllers

Cratepara paralalatabla tablaActividades Tour Crate

public function createA($id) { $tourId = $id; return view('ToursA.createAct',compact('tourId') ); }

Ruta De aqui en adelante todas las rutas se colocaran en el archivo web.php, visto en el tema 1. Ahora necesitamos habilitar la ruta [ /tours/créate] que nos redireccionara al controlador.

Vistas:

01

Creamos un archivo llamdo créate.blade.php y ponemos las etiquetas de nuestra plantilla layout y después creamos un formulario, que contenga los campos de la tabla tour. .


CRUD

---> STORE RUTA : /tours/store

Controller

el método store, el cual se activa al 01 En guardar un tour, debemos hacer un insert a cada tabla.

Para la tabla Tours

Route::post('/Tourss',['as'=> 'tours.storeA', 'uses' =>'ToursController@storeA']);

Crate para la tabla Tour Para la tabla Actividades

public function store(Request $request) { $id = DB::table('tours')->insertGetId([ "nombre" => $request ->input('nameT'), "destino" => $request ->input('destino'), "precio" => $request ->input('price'), "descripcion" => $request>input('descip'), "fechai" => $request->input('fechi'), "fechaf" => $request->input('fechaf'), Crate para la tabla Tour "created_at" => Carbon::now(), "updated_at" => Carbon::now(), ]); $idA = DB:: table('actividades')>insertGetId([ "nombre" => $request->input('nameA'), "lugar" => $request->input('destinoA'), "descripcion" => $request>input('descipA'), "created_at" => Carbon::now(), "updated_at" => Carbon::now(), ]);

Uso de Controllers

Ruta:

Habilitamos la ruta que nos lleva a tourcontroller@store .

Route::post('/TourssP',['as'=> 'tours.store', 'uses' =>'ToursController@store']);

Vistas: Ya que store no muestra nado solo ejecuta insert no es necesario crear una vista. Lo que si es necesario es que en la vista anterior(create), exista un form con un atributo action igual tours.store y otro en crateA seria tour.storeA. De lo contrario, no se enviaran los datos insertados en la página a la base. . <form class="form-wrapper" method="POST" action="{{ route('tours.store') }}"> <input type="text" name="_token" value="{{ csrf_token()}}">

01

<form class="form-wrapper" method="POST" action="{{ route('tours.storeA') }}"> <input type="hidden" name="_token" value="{{ csrf_token()}}">


Hasta este punto las pantallas deben lucir similar a estas y ser capaz de ir de una home[Imagen 1] a una vista crate [Imagen 2], donde podemos llenar un formulario y al dar click en guardar la inserscion debe reflejarse en la base de datos[Imagen3]

Imagen [1] HOME

Imagen [2] CREATE

Imagen [3] BASE

PAGE 21


CRUD

---> REED Controller En Rest, Index es equivalente a el Red, y su función es mostrar todos los tours (para este caso en específico). Para ello necesitaremos una consulta que nos devuelva todos los tours almacenados y nos envié a la vista en donde estos deben aparecer. Dentro de la vista que devolvemos usamos la función compact, la cual envía a la vista una variable que almacena toda la información recuperada por la consulta.

Index para la tabla Tour

public function index() { $tours = DB::table('tours')->get(); return view('ToursA.toursIndex', compact('tours')); Crate} para la tabla Tour

Uso de Controllers

Index solo muestra los Tour por ello no es necesario un método IndexA

Ruta En Web añadimos la siguiente ruta: Route::get('/Tourss',['as'=> 'tours.index', 'uses' =>'ToursController@index' ]);

01 RUTA : /tours/index

Ya que en la vista existe la variable $tour, gracias compact, solo nos resta acceder a cada tour mediante un @foreach dentro de el accedemos a cada campo y lo imprimimos con la notación {{$tour -> nombre campo}} equivalente a <?php echo $tour -> nombre campo ?>


CRUD

---> REED Codigo vista Index

02 RUTA : /tours/index

@foreach($tours as $tour) <div class="pricing-plan"> <img src="https://s22.postimg.org/8mv5gn7w1/paper-plane.png" alt="" class="pricing-img"> <h2 class="pricing-header">{{$tour->nombre}}</h2> <ul class="pricing-features"> <li class="pricing-features-item">{{$tour->destino}}</li> <li class="pricing-features-item"> {{$tour->descripcion}} </li> </ul> <span class="pricing-price">{{$tour->precio}}</span> <a href="{{route('tours.createA',$tour->id)}}" class="pricing-button">+ Actividades</a> <a href="{{route('tours.show',$tour->id)}}" class="pricing-button">Ver mas</a> <a href="{{route('tours.edit',$tour->id)}}" class="pricing-button">Editar</a> <form method="POST" action="{{ route('tours.destroy',$tour->id)}}"> {!! csrf_field() !!} {!! method_field('DELETE') !!} <button type="submit" class="pricing-button">Eliminar</button> </form> </div>

Uso de Controllers @endforeach


CRUD

---> REED

03

show y Edit Esta petición también se asocia al Reed, la diferencia es que show, según el Rest, sirve para mostrar un dato específico. En cuanto a nuestra aplicación se refiere, show permite mostrar un tour en específico, así como las actividades asociadas a este.

Controller El método recibe como parámetro de entrada un id, por medio del cual podemos ejecutar una consulta para que devuelva el tour asociado, con el mismo id podemos recuperar las actividades asociadas a ese tour y a su vez el detalle de actividad.

Consulta MySQL Select * from tours where id = $id Select distinct actividades.id, actividades.nombre,actividades.lugar,actividad es.descripcion,tourAct.duracion,tourAct.fecha From tourAct innerjoin tours on tourAct.fk_tour = $id inner join actividades on tours.id = tourAct.fk_act Where tour.id = $id

Consulta MySQL en Laravel

public function show($id) { $tour = DB::table('tours')->where('id',$id)->first(); ////////////////////////////////////////////////////////////// $actD = DB::table('tourAct')->where('fk_tour',$id)->get(); $idAct = DB::table('tours') ->join('tourAct', 'tours.id', '=', 'tourAct.fk_tour') ->join('actividades', 'tourAct.fk_act', '=', 'actividades.id') ->distinct() ->where('tours.id',$id) ->select('actividades.id', 'actividades.nombre','actividades.lugar','actividades.descripcion','tou rAct.duracion','tourAct.fecha') ->get(); //$actividades = DB::table('actividades')->where('id',$idAct>fk_act)->get(); return view('ToursA.show', compact('tour','idAct')); }


CRUD

04

---> REED show y Edit El mĂŠtodo show devuelven a la dos variables, las cuales contienen la informaciĂłn de tour de las actividades contenidas en cada tour.

Ruta Route::get('/Tourss/{id}',['as'=> 'tours.show', 'uses' =>'ToursController@show']);

Vista Creamos una vista llamada show y escribimos el siguiente codigo:

Codigo vista Show @foreach($idAct as $id) <div class="tab"> <h2>{{$id->nombre}}</h2> <ul class="tab"> <li>{{$id->lugar}}</li> <li>{{$id->descripcion}}</li> <li>{{$id->fecha}}</li> <li><a href="{{route('tours.editA',$id->id)}} " class="pricing-button">Editar</a></li> <li><form method="POST" action="{{ route('tours.destroyA',$id->id)}}"> {!! csrf_field() !!} {!! method_field('DELETE') !!} <button type="submit" >Eliminar</button> </form></li><br> </ul> </div> @endforeach </div>


CRUD

---> REED

05

Controller Editar contempla la misma lógica que mostrar , la diferencia es que editar debe re enviarte a un vista en la cual se muestre modificar los valores actuales de los campos.

Editar Tour [En controller]

public function edit($id) { $tour = DB::table('tours')>where('id',$id)->first(); $act = DB:: table('actividades')>where('id',$id)->first(); return view('ToursA.edit',compact('tour','act')); }

Uso de Controllers Editar TourA [En controller]

public function editA($id) { $act = DB:: table('actividades')>where('id',$id)->first(); $actD = DB:: table('tourAct')>where('fk_act',$act->id)->first(); return view('ToursA.editA',compact('act','actD')) ; }

Vistas Editar Tour

<form class="form-wrapper" method="POST" action="{{ route('tours.update',$tour->id) }}"> {!! method_field('PUT') !!} <fieldset class="section is-active"> <h3>Editar Tour</h3> <input type="hidden" name="tipo" id="tipo" value="1"> <input type="hidden" name="_token" value="{{ csrf_token()}}"> <input type="text" name="nameT" id="nameT" placeholder="Nombre del Tour" value="{{$tour->nombre}}"> <input type="text" name="destino" id="destino" placeholder="Destino" value=" {{$tour->destino}}"> <input type="text" name="price" id="price" placeholder="Costo" value="{{$tour->precio}}"> <br> <textarea rows="4" cols="50" name="descip" id="descip" > {{$tour->descripcion}} </textarea><br><br> Fecha de salida:<input type="date" name="fechi" id="fechi" placeholder="Salida" value="{{$tour->fechai}}"><br><br> Fecha de llegada:<input type="date" name="fechaf" id="fechf" placeholder="Llegada" value="{{$tour->fechaf}}"><br> <button class="button" type="submit">Guardar</button> </form>


CRUD

---> REED

05

Controller Editar contempla la misma lógica que mostrar , la diferencia es que editar debe re enviarte a un vista en la cual se muestre modificar los valores actuales de los campos.

Editar Tour [En controller]

public function edit($id) { $tour = DB::table('tours')>where('id',$id)->first(); $act = DB:: table('actividades')>where('id',$id)->first(); return view('ToursA.edit',compact('tour','act')); }

Uso de Controllers Editar TourA [En controller]

public function editA($id) { $act = DB:: table('actividades')>where('id',$id)->first(); $actD = DB:: table('tourAct')>where('fk_act',$act->id)->first(); return view('ToursA.editA',compact('act','actD')) ; }

Vistas Editar Tour

<form class="form-wrapper" method="POST" action="{{ route('tours.update',$tour->id) }}"> {!! method_field('PUT') !!} <fieldset class="section is-active"> <h3>Editar Tour</h3> <input type="hidden" name="tipo" id="tipo" value="1"> <input type="hidden" name="_token" value="{{ csrf_token()}}"> <input type="text" name="nameT" id="nameT" placeholder="Nombre del Tour" value="{{$tour->nombre}}"> <input type="text" name="destino" id="destino" placeholder="Destino" value=" {{$tour->destino}}"> <input type="text" name="price" id="price" placeholder="Costo" value="{{$tour->precio}}"> <br> <textarea rows="4" cols="50" name="descip" id="descip" > {{$tour->descripcion}} </textarea><br><br> Fecha de salida:<input type="date" name="fechi" id="fechi" placeholder="Salida" value="{{$tour->fechai}}"><br><br> Fecha de llegada:<input type="date" name="fechaf" id="fechf" placeholder="Llegada" value="{{$tour->fechaf}}"><br> <button class="button" type="submit">Guardar</button> </form>


CRUD

--->Â REED

06

Efitar Act <form class="form-wrapper" method="POST" action="{{ route('tours.updateA',$act->id) }}"> {!! method_field('PUT') !!}

<fieldset class="section is-active"> <input type="hidden" name="tipo" id="tipo" value="2"> <input type="hidden" name="_token" value="{{ csrf_token()}}"> <input type="text" name="nameA" id="nameA" placeholder="Nombre de la Actividad" value="{{$act->nombre}}"> <input type="text" name="destinoA" id="destinoA" placeholder="Lugar" value="{{$act>lugar}}"> <textarea rows="4" cols="50" name="descipA" id="descipA"> {{$act->descripcion}} </textarea><br><br> <input type="text" name="time" id="time" placeholder="Duracion" value="{{$actD->duracion}}"> Dia:<input type="date" name="fechaA" id="fechaA" placeholder="Dia" value="{{$actD->fecha}}"><br>

 Uso de Controllers

<button class="button" type="submit">Guardar</button>

</form>


CRUD

---> UPDATE

01

Update permite guardar los cambios hecho a un tour especifico . Para implementarlo es necesario hacer la consulta dentro de Update y crear un ruta . Es importante no olvidar el form, en la vista editar con el atributo action que contenga la dirección a la ruta Update

Controller Update public function update(Request $request, $id) { //Actualizar $tipo = $request->input('tipo'); DB::table('tours')->where('id',$id)->update([ "nombre" => $request->input('nameT'), "destino" => $request->input('destino'), "precio" => $request->input('price'), "descripcion" => $request->input('descip'), "fechai" => $request->input('fechi'), "fechaf" => $request->input('fechaf'), "updated_at" => Carbon::now(), ]); //Redirecionar return redirect()->route('tours.index');

Uso de Controllers

}

Ruta Update Tour

Route::put('/Tourss/{id}/edit',['as'=> 'tours.update', 'uses' =>'ToursController@update']);


CRUD

---> UPDATE Controller Update A public function updateA(Request $request, $id) { DB::table('actividades')->where('id',$id)->update([ "nombre" => $request->input('nameA'), "lugar" => $request->input('destinoA'), "descripcion" => $request->input('descipA'), "updated_at" => Carbon::now(), ]); DB::table('tourAct')->where('fk_act',$id)->update([ "fecha" => $request->input('fechaA'), "duracion" => $request->input('time'), "updated_at" => Carbon::now(), ]); $idT =DB::table('tourAct')->select('fk_tour')>where('fk_act',$id)->first(); //return redirect()->route('tours.index');

Uso de Controllers

return redirect()->route('tours.show', ['post' => $idT]);

}

Ruta Tours A Route::delete('/Tourss/{id}/editA',['as'=> 'tours.destroyA', 'uses' =>'ToursController@destroyA']);

02


CRUD

---> DELETE Delete se encarga de eliminar un elemento de la base de datos , al igual que update no requiere de una vista ya que solo ejecuta la acción y posteriormente redirecciona a una pagina de inicio.

Controller Delete Tours public function destroyA($id) { $idT =DB::table('tourAct')->select('fk_tour')>where('fk_act',$id)->first(); DB::table('touract')->where('fk_act',$id)>delete(); DB::table('actividades')->where('id',$id)>delete(); $tour = DB::table('tours') ->join('touract', 'tours.id', '=', 'tourAct.fk_tour') ->join('actividades', 'tourAct.fk_act', '=', 'actividades.id') ->distinct() ->where('actividades.id',$id) ->select('tours.id') ->first();

Uso de Controllers

return redirect()->route('tours.show', ['post' => $idT]); //return redirect()->route('tours.index');

}

Ruta Tours A Route::delete('/Tourss/{id}/editA',['as'=> 'tours.destroyA', 'uses' =>'ToursController@destroyA']);

01


CRUD

--->Â DELETE Controller Delete Tours

public function destroyA($id) { $idT =DB::table('tourAct')->select('fk_tour')>where('fk_act',$id)->first(); DB::table('touract')->where('fk_act',$id)>delete(); DB::table('actividades')->where('id',$id)>delete(); $tour = DB::table('tours') ->join('touract', 'tours.id', '=', 'tourAct.fk_tour') ->join('actividades', 'tourAct.fk_act', '=', 'actividades.id') ->distinct() ->where('actividades.id',$id) ->select('tours.id') ->first();

 Uso de Controllers

return redirect()->route('tours.show', ['post' => $idT]); //return redirect()->route('tours.index');

}

Ruta Tours A Route::delete('/Tourss/{id}/editA',['as'=> 'tours.destroyA', 'uses' =>'ToursController@destroyA']);

01


CONCLUCIONES Laravel es un framework muy versátil, que ofrece diversas opciones para para un desarrollo ágil. Debido a que su principal objetivo es lograr códigos lo más limpios posibles Laravel brinda muchas opciones que permiten crear códigos eficientes y re utilizables. Entre las principales fortalezas que encontré al interinar con este framework son: Permite la reutilización de código, gracias a su motor de pantillas, blade. Permite coneción a bases de datos de manera rapida. Permite al usuario crear y consultar una base de dato dentro del mismo proyecto. Algunos puntos que me parecieron no muy atractivos son: El nivel de emcapsulacion es bastante alto, si estas desarrollando una aplicación sencilla puede llegar a se muy tedioso. Las consultas MsSQL, se realizan con una sinxansis diferente a la comúnmente usada. Personalmente me gusto mucho trabajar con este framework y lo considero bastante útil y fácil de comprender


REFERENCIAS Paginas consultadas : LARAVEL. (S/D de S/M de S/A). LARAVEL.com. Obtenido de LARAVEL.com: https://laravel.com/docs/5.5/migrations Dulio, P. (S/d de S/M de 2017). Styde. Obtenido de Styde: https://styde.net/laravel-5/ Point, T. (S/M de S/M de S/A). Tutorial Point. Obtenido de Tutorial Point: https://www.tutorialspoint.com/laravel/

Páginas sugeridas : https://laragon.org/


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.