Laravel Eloquent ORM | Sentencias Simples

in #laravel6 years ago


ORM

La asignación relacional de objetos (ORM) es una técnica de programación en la que se utiliza un descriptor de metadatos para conectar el código objeto a una base de datos relacional. El código de objeto está escrito en lenguajes de programación orientada a objetos (OOP) como Java o C #. ORM convierte los datos entre sistemas de tipos que no pueden coexistir dentro de bases de datos relacionales y lenguajes OOP.

ORM resuelve el código objeto y la base de datos relacional no coincidentes con tres enfoques: de abajo hacia arriba, de arriba hacia abajo y se encuentran en el medio. Cada enfoque tiene su parte de beneficios y desventajas. Al seleccionar la mejor solución de software, los desarrolladores deben comprender completamente el entorno y los requisitos de diseño.

Además de la técnica de acceso a datos, los beneficios de ORM también incluyen:

  • Desarrollo simplificado porque automatiza la conversión de objeto a tabla y de tabla a objeto, lo que resulta en menores costos de desarrollo y mantenimiento.
  • Menos código en comparación con SQL incorporado y procedimientos almacenados escritos a mano
  • Almacenamiento en caché de objetos transparente en el nivel de aplicación, mejorando el rendimiento del sistema
  • Una solución optimizada que hace que una aplicación sea más rápida y fácil de mantener El surgimiento de ORM en el desarrollo de aplicaciones múltiples ha creado un desacuerdo entre los expertos.

Las principales preocupaciones son que ORM no funciona bien y que los procedimientos almacenados pueden ser una mejor solución. Además, la dependencia de ORM puede dar lugar a bases de datos mal diseñadas en ciertas circunstancias.

Eloquent ORM

Eloquent ORM implenta ActiveRecord en base de datos de manera sencilla. A cada table le corresponde un “Modelo” el cual nos permite consultar, registrar y modificar los datos de la base de datos.

Tablas a Utilizar

Creamos la base de dato: alt

Y en ejecutador de consultas SQL de phpmyadmin ingresamos lo siguiente:

CREATE TABLE shops (
    article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)                 DEFAULT ''     NOT NULL,
    price   DOUBLE(16,2)             DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);

CONSULTAS

¿Cual es el mas alto numero de articulo?

SQL:

SELECT MAX(article) AS article FROM shop;

LARAVEL:

$high_article = \App\Shop::max('article');

Mostrando la información del articulo mas costoso:

SQL:

SELECT article, dealer, price
FROM   shop
WHERE  price=(SELECT MAX(price) FROM shop);

LARAVEL:

$most_expensive = DB::table('shops')->where('price',\App\Shop::max('price'))->get()->first();

Encontrar el más alto precio por articulo

SQL:

SELECT article, MAX(price) AS price
FROM   shop
GROUP BY article;

LARAVEL:

$hightes_prices = DB::table('shops')->select(DB::Raw('MAX(price) as price,article'))->GroupBy('article')->get();

Por cada articulo encontrar los comerciantes(dealers) con el precio mas costoso

SQL:

SELECT s1.article, dealer, s1.price FROM shop s1 JOIN ( SELECT article, MAX(price) AS price FROM shop GROUP BY article) AS s2 ON s1.article = s2.article AND s1.price = s2.price;

LARAVEL:

$more_expensive = DB::table('shops as s1')->join(
                        DB::Raw("(SELECT article, MAX(price) AS price FROM shops
                            GROUP BY article ) AS s2"), function($join){
           $join->on('s1.article', '=', 's2.article')->on('s1.price', '=', 's2.price');
        }
                        )->get();


Posted from my blog with SteemPress : http://webitacora.com.ve/index.php/2018/04/26/laravel-eloquent-orm-sentencias-simples/

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63287.47
ETH 2569.39
USDT 1.00
SBD 2.81