Post Top Ad

Your Ad Spot

martes, 8 de septiembre de 2020

Cómo empezar con Eloquent en Laravel

 Cómo empezar con Eloquent en Laravel

Eloquent hace uso del patrón Active Record adorado por los desarrolladores de software a lo largo y ancho. Active Record fue nombrado originalmente por el desarrollador de software Martin Fowler cuando lo discutió en su libro titulado Patterns of Enterprise Application Architecture. Es un patrón donde un objeto se asigna a una tabla en una base de datos. Las propiedades del objeto suelen corresponder a las columnas de la tabla dada. Es un patrón conveniente y fácil de usar, y Eloquent es una excelente versión de registro activo. ¡Vamos a probarlo ahora en nuestra mesa de juegos!


Hablemos de modelos

Ya hemos tomado el Generador de consultas para dar una vuelta rápida por el bloque y funciona muy bien. Ahora veremos Eloquent y veremos cómo podemos usar eso para interactuar con la base de datos. Al usar Eloquent, usaremos Modelos. En el patrón MVC o Model View Controller, el modelo asume la responsabilidad de mantener y administrar los datos en una aplicación. Quizás se pregunte, entonces, por qué a veces aquí la gente se refiere a ellos como Modelos en plural cuando se habla de un sistema dado. Esto se debe a que así como su base de datos tiene muchas tablas, su aplicación puede tener muchos modelos. En Eloquent, tendrá un modelo por tabla de base de datos. Hemos estado trabajando con el concepto de mantener un repositorio de juegos durante esta serie de tutoriales. Ya tenemos mesa de juegos, entonces, ¿por qué no hacer un modelo que se corresponda con esa tabla? Primero, busquemos ayuda.
php artisan ayuda a hacer modelo


Un modelo es la versión singular de la tabla de la base de datos que representa.

Sigamos adelante y creemos un modelo de juego ahora.
php artisan make model juego

Los modelos viven en el directorio de la aplicación. Observe que ahora tenemos un archivo llamado Game.phpque es el modelo que acabamos de crear.
modelo en phpstorm


aplicación / Game.php

La clase Game amplía la clase Eloquent Model.


Pasar de Query Builder a Eloquent

Ahora que tenemos un modelo, podemos utilizarlo. Tomemos ese archivo de rutas de nuestro tutorial de introducción al generador de consultas y cámbielo para hacer uso de nuestro nuevo modelo Eloquent.

Este fragmento obtiene todos los juegos de la base de datos como una colección, al igual que en nuestro tutorial de creación de consultas.


Importar el espacio de nombres

App\Game::all();es una sintaxis bastante concisa. ¡Sin embargo, podemos hacerlo más corto! Importemos el espacio de nombres y luego acortemos nuestra llamada a la base de datos a simplementeGame::all();


Encontrar un registro específico con Eloquent

Podemos encontrar un registro por su identificación con el find()método. Nuestros archivos del tutorial del generador de consultas ahora están actualizados para usar Eloquent, y todo sigue funcionando correctamente.

laravel en acción


Practicando consultas elocuentes con Tinker

Tener una forma de probar fácilmente fragmentos de código es realmente útil. Con JavaScript, simplemente abre Chrome Developer Tools y puede probar expresiones simples directamente en la consola. Con PHP, necesita guardar su archivo y luego volver a cargar su navegador. Hemos cubierto un par de formas de probar PHP para solucionar este problema. Veamos cómo usar Tinker para practicar la realización de consultas elocuentes.

Navegue al directorio raíz de su proyecto en la terminal y escriba php artisan tinkerSerás recibido con algo como Psy Shell v0.8.3 (PHP 7.1.2-3 + deb.sury.org ~ xenial + 1 â cli) por Justin Hileman , y un mensaje que consta de tres símbolos mayores que. Ahora está en un REPL para PHP.
consultas elocuentes usando tinker


Insertar nuevos registros con Eloquent

Uno de mis casos de uso favoritos para Eloquent es insertar nuevos registros en la base de datos. Es muy sencillo de hacer. Echale un vistazo.
inserte un nuevo registro en la base de datos usando elocuente
Simplemente escribiendo new Game;, se crea una nueva instancia de nuestro modelo de juego. Recuerda que nuestra mesa de juegos tiene varias columnas. Recordemos cuáles son.
describir la tabla mysql desde la consola
Las columnas también se denominan Campos. Entonces podemos ver los campos de identificación , título , editor , fecha de lanzamiento , created_at y updated_at . Esto es lo que es tan genial. Esos campos en la tabla de la base de datos se asignan directamente a los nombres de propiedad en el objeto ModeloLo que eso significa es que simplemente podemos asignarles valores, tal como lo haríamos con cualquier otro objeto en PHP. Cuando haya terminado de asignar valores, todo lo que tiene que hacer es llamar al save()método en el objeto y los datos se guardan directamente en esa tabla. ¡Muy guay! Agreguemos otro juego.
agregar registros a la base de datos tinker elocuente
2017-04-05_18-57-58
Ahora puede que se pregunte por qué no tuvimos que preocuparnos por los campos de identificación o marca de tiempo . Esto se debe a que estos campos se manejan automáticamente en la base de datos o por Eloquent. El campo id es un campo de incremento automático , lo que significa que su valor aumentará en uno cada vez que se agregue un nuevo registro a la base de datos. De esta manera, cada registro en la base de datos tendrá su propia identificación única. MySql se encarga de esto por nosotros. losLas marcas de tiempo son manejadas automáticamente por Eloquent, por lo que nunca tendremos que configurarlas manualmente.

Veamos todos los juegos nuevamente. Esta vez, actualizaremos nuestro archivo de rutas para que podamos inspeccionarlas. También nos daremos algunas ideas sobre cómo agregar restricciones a la consulta para obtener juegos específicos de la base de datos.


Obtén todos los registros con all();


Cómo funciona Eloquent

Una cosa a tener en cuenta aquí es que la forma en que funciona Eloquent, o cualquier otra herramienta utilizada para trabajar con una base de datos, es que genera las consultas SQL por usted. Entonces, aunque simplemente escriba algo como Game :: all () , detrás de escena, la base de datos se consulta con SQL. Para esta consulta en particular, se selecciona * de gamesDicho esto, intentemos ahora algunas consultas diferentes para obtener un juego en particular o un conjunto de juegos.


Varias formas de recuperar o seleccionar datos

Enumeraremos el comando Eloquent y la consulta SQL resultante como referencia.


Obtener registros específicos usando where()

La cláusula where toma tres argumentos en forma de where ('campo', 'operador', 'valor'). El primer argumento es el campo o columna de la tabla que le interesa. En nuestro ejemplo, eso significa que buscamos obtener registros que tengan un rasgo particular en los campos de identificación, título, editor o fecha de publicación. El segundo argumento es el operador. Estas son cosas como =,>,> =, <, <=,! =, Like, not like, regexp, in, not in, between, not between, es nulo, no es nulo, etc ... El argumento es el valor con el que desea comparar, operar o trabajar en general. Consigamos todos los juegos que tengan una identificación mayor que 3.

  • seleccione * desde gamesdonde id> '3';
  • Si observa las identificaciones de los dos resultados devueltos, podemos ver que ambos tienen un valor mayor que 3. ¡Así que nuestra consulta funcionó!


    ¿Qué tal conseguir un juego que tenga la palabra Mega en el título ? Ya viene.

  • seleccione * de gamesdonde titlecomo '% Mega%';
  • ¿Qué tal todos los juegos que tienen un editor de Nintendo?

  • seleccione * desde gamesdonde publisher= 'Nintendo';

  • Hagamos que los juegos tengan una fecha de lanzamiento de 1989.

  • seleccione * de gamesdonde releasedate= '1989';
  • Entonces esto es muy bueno. Tenemos una buena comprensión where( )y cómo hacer uso de él, y lo hará. ¡Todo el tiempo!


    Ordenar los resultados de la consulta usando orderBy( )

    orderBy () se puede aplicar a consultas Eloquent para ordenar los resultados por un campo particular en la tabla. De forma predeterminada, orderyBy () ordena los resultados en orden ascendente. Si pasa el segundo argumento opcional con una cadena de 'desc', puede ordenar los resultados en orden descendente. Probemos con un ejemplo.

    Ordene todos los juegos por el campo de identificación en orden descendente.

  • seleccionar * de gamesorden por iddesc;

  • Limitar el número de resultados take()e introducir el encadenamiento de comandos

    Limitar el número de resultados que debe devolver una consulta en particular es una operación muy común. En Eloquent, podemos hacer uso del comando take () y pasarle un valor numérico para representar el número o registros que queremos. Además, mostraremos un ejemplo de cómo encadenar comandos. Esto es lo que se conoce como interfaz fluida. Veamos un ejemplo aquí.

    Obtenga tres registros ordenados por fecha de lanzamiento en orden descendente.

  • seleccione * de la gamesorden por releasedatelímite de desc 3;

  • Recuperar varios registros de un solo campo en una tabla con pluck( )

    Si solo desea un campo específico de la tabla, puede usarlo pluck()así.

  • seleccionar titlede games;

  • Las consultas no se ejecutan hasta que llamas get()

    Agreguemos un par de juegos más a la base de datos para demostrar lo que queremos decir con esto.
    insertar nuevos registros usando elocuente

    Ahora, lo que vamos a hacer es configurar una consulta elocuente básica sin llamar get()y asignar el resultado a una variable. Se asigna una instancia de Illuminate \ Database \ Eloquent \ Builder a esa variable. Lo que esto significa es que puede agregar comandos a esa instancia uno a la vez, como mejor le parezca. Cuando esté listo para activar la consulta, puede llamar a get (). Veamos esta idea en la práctica.
    cómo construir una consulta en elocuente
    Entonces puedes ver que cuando escribimos algo como $ game = Game :: where ('publisher', '=', 'Nintendo'); : Estamos poniendo una instancia del generador de consultas en la variable $ game. Luego podemos llamar a comandos adicionales en esa variable. Este es un proceso de 'construir' una consulta, por así decirlo. Cuando esté listo para ejecutar la consulta, simplemente llame$ juego-> obtener (); para dispararlo. Para este tutorial de introducción, este concepto no es fundamental. Cuando empiezas a entrar en Eloquent avanzado, esto se vuelve más importante.

    La consulta anterior es la misma que si estuviera escrita así:

    seleccione * desde gamesdonde publisher= orden 'Nintendo' por releasedatelímite de desc 3;


    Introducción a los ámbitos de consulta

    ¿Y si te dijera que podrías escribir algo como Game :: nintendo () -> get (); y ¿se han recuperado todos los juegos de Nintendo de la base de datos? Bueno, te lo digo, ¡veamos cómo podemos hacer esto!

    Abra el modelo Games.php y agregue el siguiente código.


    aplicación / Games.php

    Probémoslo en nuestra /ruta.

    ejemplo de alcance de consulta en laravel elocuente

    ¡Bien bien bien! ¡Eso sí que se ve muy bien! Entonces, para crear un alcance de consulta, haga lo siguiente.

    • Crea una nueva función pública en tu clase Modelo
    • Nombra el alcance como quieras, comenzando con una letra mayúscula y con el prefijo de la palabra alcance, todo en minúsculas.
    • La función acepta la consulta $ como argumento
    • La función devuelve la consulta $ con la lógica elegida aplicada

    Los ámbitos de consulta se pueden utilizar con fluidez

    Podemos ver que el alcance de una consulta es una buena forma de crear un nombre conciso agradable como un envoltorio alrededor de una lógica más larga para una consulta. Esto es perfecto para consultas más largas que anticipa usar muchas veces en su aplicación. Otro buen beneficio de los ámbitos de consulta es que puede usarlos con fluidez como cualquier otro comando en el generador de consultas. Por ejemplo, usemos nuestro nuevo alcance de consulta de Nintendo, pero también queremos solo juegos de Nintendo que tengan la palabra Mario en su título. Probemos esto.

    ejemplo de alcance de consulta con restricciones adicionales
    Ahora que es lo que llamo Enfriar y la cuadrilla!


    Actualizar un modelo

    Es bastante fácil actualizar un registro en la base de datos usando Eloquent. Simplemente busque el modelo, asigne cualquier valor nuevo a sus propiedades y luego guarde. Veamos cómo.
    actualizar un registro en la tabla de la base de datos con elocuente


    Eliminar un modelo

    Hay varias formas de eliminar registros en la tabla. Aquí borramos un solo juego por su id. Luego, eliminamos varios juegos a la vez según el nombre del editor.
    eliminar registros usando elocuente

    No hay comentarios.:

    Publicar un comentario

    Dejanos tu comentario para seguir mejorando!

    outbrain

    Páginas