Skip to content

Instantly share code, notes, and snippets.

@devloe
Last active June 4, 2023 17:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save devloe/182488903a5c2b63d87b to your computer and use it in GitHub Desktop.
Save devloe/182488903a5c2b63d87b to your computer and use it in GitHub Desktop.
Ejemplo básico de CRUD en Laravel
<?php
// Tenemos un objeto producto en la base de datos
class Product extends Eloquent
{
protected $table = 'products';
}
class BaseController extends Controller{
public function getDelete($id)
{
// Eliminamos el registro de la base de datos
$this->model()->find($id)->delete();
return 'Registro eliminado';
}
public function getListado($id){
{
// Obtenemos el listado de registros
$registros = $this->model()->orderBy('fecha', 'desc')->get();
// Mostramos la vista y le pasamos los registros
// asi luego podemos hacer foreach($registros as $registro){ ... }
return View::make('forms/'.$this->type)->with('registros', $registros);
}
public function getForm($id = null)
{
$datos = $this->model();
// Si $id no es nulo, obtenemos el
// registro de la base de datos
if($id){
$datos = $this->model()->find($id);
}
// Mostramos la vista y le pasamos los datos
// del registro para rellenar el formulario,
// de manera que en la vista podamos hacer $data->precio por ej.
return View::make('forms/'.$this->type)->with('datos', $datos);
}
}
class ProductsController extends BaseController{
// Esto es el nombre del objeto para identificarlo
protected $type = 'products';
// Esto sirve para pasar el modelo que vamos a utilizar
// al controlador para manejar los registros
protected function model()
{
return new Product;
}
}
// Registramos la ruta, y le asignamos el controlador.
// De esta manera podemos hacer uso de por ejemplo:
// /productos/delete/18
// /productos/form - Muestra formulario vacio para crear un nuevo registro
// /productos/form/16 - Muestra formulario rellenado
// /productos/listado
Route::controller('products', 'ProductsController');
// Podemos crear cuantos controladores queramos
// en función de los objetos que tengamos, por ej.:
//
class ViajesController extends BaseController{
// Esto es el nombre del objeto para identificarlo
protected $type = 'viajes';
// Esto sirve para pasar el modelo que vamos a utilizar
// al controlador para manejar los registros
protected function model()
{
return new Viaje;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment