Laravel: Modelos, Eloquent y uso de Tinker (parte 8)
Definiciones
- ORM: Modelo de programación que permite mapear las estructuras de una base de datos relacional (en nuestro ejercicio, MySQL), sobre una estructura lógica de entidades para simplificar y acelerar el desarrollo. Las estructuras de la base de datos quedan vinculadas con las entidades lógicas o base de datos virtual definida en el ORM, de tal modo que las acciones CRUD (Create, Read, Update, Delete) se realizan de forma indirecta por medio del ORM. Así, realizar consultas a la base de datos se puede hacer sin escribir código SQL, sino utilizando objetos y métodos.
- Modelos: En Laravel crearemos un modelo por cada una de las tablas que queramos administrar. Existe una convención para el nombre de las tablas y los modelos, ya que éstos tendrán el nombre en singular para un nombre de tabla en plural (en inglés). Siempre podemos crear una variable de tipo protected dentro de la clase del modelo para especificar otro nombre de tabla, si fuera necesario no seguir la convención.
- Eloquent: El ORM que incluye Laravel.
- Tinker: es una herramienta para ejecutar código php en la consola de Laravel, con la que podemos hacer pruebas de funcionamiento, y también podemos usar la directivas de Eloquent.
Vamos a ejercitarnos con el uso de Tinker, una herramienta que nos permite ejecutar el consola acciones sobre la base de datos mediante el ORM, instanciando objetos y llamado a sus métodos. Para ejecutar Tinker, en consola:
php artisan tinker
Para salir de Tinker, simplemente ejecutamos exit.
Antes de continuar, vamos a crear un modelo para la tabla «cursos», por lo que lo llamamos Curso siguiendo la convención:
php artisan make:model Curso
Ya tenemos nuestro archivo dentro de la capeta Models.
Insertar registros en la base de datos
- Llamamos al modelo con el comando use y su namespace
- Crear una instancia del objeto con el comando new
- Agregar propiedades a los métodos
- Salvar con save; si queremos guardar los registros en la base de datos.
En Tinker:
use App\Models\Curso
$curso = new Curso; // aquí estamos instanciando el objeto
// dentro de una variable llamada curso
$curso->name ="nombre del curso"; // asignamos un valor
// a la propiedad name
// que es un campo de la tabla
$curso->description="descripción del curso"; // más propiedades
$curso; // esta línea sólo devuelve info del objeto
$curso->save(); // guarda la info del objeto en la tabla
Si después de salvar, volvemos a ejecutar:
$curso;
Tendremos la información de los campos created_at y updated_at leídos directamente desde la base de datos. Si modificáramos el objeto, se actualizaría el campo updated_at.
Para actualizar un campo, como el objeto ya está creado, basta con escribir:
$curso->description="descripción actualizada";
$curso->save();
Podemos así añadir más campos:
$curso2 = new Curso;
$curso2->name ="otro curso";
$curso2->description="otra descripción del curso";
$curso2->save();
Recursos
Enlace de Youtube: https://www.youtube.com/watch?v=MUOKdpbgbNk&list=PLZ2ovOgdI-kWWS9aq8mfUDkJRfYib-SvF&index=12
Comentario sobre git: https://es.stackoverflow.com/questions/368437/como-crear-versiones-de-un-proyecto-con-git
Guía breve para git: https://rogerdudler.github.io/git-guide/index.es.html