Diferencia entre revisiones de «Usuario:ManuelRomero/Laravel/eloquent»
De WikiEducator
(→Creando las rutas) |
|||
Línea 83: | Línea 83: | ||
*Esto puede generar un pequeño caos en nuestro web.php, especialmente si tenemos varias tablas (modelos) creados | *Esto puede generar un pequeño caos en nuestro web.php, especialmente si tenemos varias tablas (modelos) creados | ||
*Para ello laravel utiliza lo que llama '''''Resources''''' | *Para ello laravel utiliza lo que llama '''''Resources''''' | ||
− | + | *Especificaremos en el fichero '''''web.php''''' directamente el uso de un recurso | |
− | + | ||
− | + | ||
− | * | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | <source lang=bash> | |
− | + | Route::resource("cliente", App\Http\Controllers\AlumnoController::class); | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</source> | </source> | ||
− | * | + | *Y de esta forma ya tenemos disponibles todos las rutas para trabajar de forma RestFull con nuestra clase |
− | + | *Un RestFull, especifica que podremos realizar todas las acciones (lógicamente escribiendo el código) en los métodos correspondinetes al controlador ante las solicitudes. | |
− | + | *Pero ya tenemos establecidas '''''De qué forma se va a solicitar el recuros''''' y '''''qué método va a invocarse''''' | |
− | + | GET|HEAD Cliente ............................................................................. Cliente.index › AlumnoController@index | |
− | + | POST Cliente ............................................................................. Cliente.store › AlumnoController@store | |
− | + | GET|HEAD Cliente/create .................................................................... Cliente.create › AlumnoController@create | |
− | + | GET|HEAD Cliente/{Cliente} ..................................................................... Cliente.show › AlumnoController@show | |
− | * | + | PUT|PATCH Cliente/{Cliente} ................................................................. Cliente.update › AlumnoController@update |
− | + | DELETE Cliente/{Cliente} ............................................................... Cliente.destroy › AlumnoController@destroy | |
− | + | GET|HEAD Cliente/{Cliente}/edit ................................................................ Cliente.edit › AlumnoController@edit | |
− | + | <br /> | |
− | + | {|Método de solicitud(verbo http)|Ruta|Nombre de ruta|Método a ejecutar| | |
− | + | |- | |
− | + | |GET| /cliente|cliente| index| | |
− | + | |- | |
− | + | |POST| /cliente|cliente| store| | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | |} | |
− | } | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
===Interactuando con la tabla=== | ===Interactuando con la tabla=== |
Revisión de 17:51 13 abr 2022
Eloquent
- Eloquent es un modelo objeto-Relacional ORM que se implementa en laravel.
- De esta forma se va a establecer una clase (el modelo) nos va a permitir trabajar de forma sencilla y muy productiva con una base de datos.
- El modelo (la clase) se va a relacionar con una tabla en la bd.
Tip:
- Para utilizarlo cada tabla de la base de datos con la que trabajamos va a tener un modelo creado en nuestro proyecto .
- Los modelos que cremos con ~artisan se ubicaran en la carpeta de nuestro proyecto app/Http
- Como los diferentes comandos, tenemos una serie de opciones en su creación que podemos ver con la opción -h
Creando las rutas
- Cuando queremos gestionar una tabla de forma completa (CRUD) debemos atender a eventos con diferentes significados
- Un submit para agregar un registro (C)
- Un submit para agregar Editar un registro y otro para guardarlo(RU)
- Un submit para eliminar un registro (D)
- Esto puede generar un pequeño caos en nuestro web.php, especialmente si tenemos varias tablas (modelos) creados
- Para ello laravel utiliza lo que llama Resources
- Especificaremos en el fichero web.php directamente el uso de un recurso
Route::resource("cliente", App\Http\Controllers\AlumnoController::class);
- Y de esta forma ya tenemos disponibles todos las rutas para trabajar de forma RestFull con nuestra clase
- Un RestFull, especifica que podremos realizar todas las acciones (lógicamente escribiendo el código) en los métodos correspondinetes al controlador ante las solicitudes.
- Pero ya tenemos establecidas De qué forma se va a solicitar el recuros y qué método va a invocarse
GET|HEAD Cliente ............................................................................. Cliente.index › AlumnoController@index
POST Cliente ............................................................................. Cliente.store › AlumnoController@store GET|HEAD Cliente/create .................................................................... Cliente.create › AlumnoController@create GET|HEAD Cliente/{Cliente} ..................................................................... Cliente.show › AlumnoController@show PUT|PATCH Cliente/{Cliente} ................................................................. Cliente.update › AlumnoController@update DELETE Cliente/{Cliente} ............................................................... Cliente.destroy › AlumnoController@destroy GET|HEAD Cliente/{Cliente}/edit ................................................................ Cliente.edit › AlumnoController@edit
/cliente|cliente| index| |
/cliente|cliente| store|
|
Interactuando con la tabla
- Para obtener todos los registros de la tabla all()
$usuarios = Ususario::all(); foreach( $usuarios as $usuario){ echo $usuario->nombre; }
Sería equivalente a hacer
Select * from usuarios;
- Obetener un solo registro (necesitamos para ello usar compos únicos como $id
$id=58; $usuario = Ususario::find($id);
- Obtener solo algún campo de la tabla
$id=58; $usuario = Ususario::find($id, array('nombre')); echo "Usuario encontrado ". $usuario->nombre;
- Obetener registros que cumplan una condicion where(..)->get()
$usuarios = Ususario::where('edad','>',18)->get(); foreach( $usuarios as $usuario){ echo $usuario->nombre; }
- Podemos usar una serie de métodos mágicos del tipo whereNombreColumna
//Todos los usuarios de 20 años $usuarios = Ususario::whereEdad(20)->get(); foreach( $usuarios as $usuario){ echo $usuario->nombre; }
- Insertar registros save()
- Para insertar registros simplemente asignaremos valor a cada campo del modelo y usaremos el método save
$usuario = new Ususario; $user->nombre = 'Maria'; $user->edad = 30; $user->direccion = 'Casa de Maria'; $user->save();
- Borrar registros delete()
- Para borrar un lo localizamos y usamos el método delete()
$user = User::find(1);
$user->delete();
$usuario = Usuario::find(1);//Localizamos el usuario con id 1 $user->delete();
Mostrando mensaje de acciones realizadas
- En el controlador donde se haya creado el registro
public function xxxxxx{ \Session::flash("mensaje_accion", "Se ha creado el registro"); }
<div class="container> @if (Session::has("mensaje_accion")) <button type="button" class="close" data-dismisss="alert" aria-hidden="true">×</button> {{Session::get("mensaje_accion")}} </div>