Trabajando con el Config en Laravel

laravel

Una de las potentes características con que poder crear y escalar una aplicación, es que facilita de un modo muy sencillo, desarrollar empleando el config en Laravel.

Esta flexibilidad para establecer y modificar parámetros de configuración, diferentes  y alternos, es parte de la magia que Laravel ofrece.

En el directorio config, podremos crear nuestra propia configuración de la api, no ya solo de modificar parámetros, sino además de crear nuestros propios archivos de configuración

Crear un archivo de configuración

Para crearlo basta con crear en la carpeta config, un nuevo file, a modo de ejemplo podemos llamarlo, sitios.php.

Siguiendo las convenciones de Laravel, un archivo de configuración es esencialmente un array de arrays que agrupa parámetros, o sea que con declarar un return que devuelva un arreglo vacío dentro, ya tendríamos un archivo listo.

Nuestro próximo paso será añadir las opciones que declararan el comportamiento que esperamos, por tanto siendo un array de array acepta matrices multidimensionales.

Supongamos que trabajaremos con tres tipos de sitios, sitio_grande, sitio_mediano y sitio_pequeño,  a los cuales nos interesa configurarles las opciones url, cookie, y el tiempo  de vida de esta; entonces creamos para ellos una matriz múltiples con sus parámetros:

 return [ 
     'sitio_grande' => [ 
                        'url' => '',
                        'cookie' => '',
                        'durac_cookie' => ''
             ], 
     'sitio_mediano' => [ 
                        'url' => '',
                        'cookie' => '',
                        'durac_cookie' => ''
             ],
     'sitio_pequeño' => [ 
                        'url' => '',
                        'cookie' => '',
                        'durac_cookie' => ''
             ],
     ]; 

En nuestro ejemplo no hemos dado valor a las variables, pues queremos asignarlos luego de modo dinámico, pero si no fuera necesario y tuviéramos valores únicos, el archivo pordria quedar configurado asi:

 return [ 
     'sitio_grande' => [ 
                        'url' => 'https://sitio_grande.com',
                        'cookie' => 'ksiwiwjwoiii99k393j33’303j0',
                        'durac_cookie' => '3600'
             ], 
     'sitio_mediano' => [ 
                        'url' => 'https://sitio_mediano.com',
                        'cookie' => 'msksnsossjwoiii5858484n33j0',
                        'durac_cookie' => '3600'              
 ],
     'sitio_pequeño' => [ 
                        'url' => 'https://sitio_pequeño.com',
                        'cookie' => '0siwiwj09090393j33’zjsjiwwj9',
                        'durac_cookie' => '3600'
             ],
     ]; 

Acceder a la configuración

Para acceder a la configuración podemos usar la fachada Config, y su método get, siguiendo la notación de punto. Podriamos acceder a la cookie del sitio mediano, de este modo:

dd(Config::get(‘sitios.sitio_mediano.cookie’);

Esto nos devolverá el valor de la configuración para el sitio medio, y su variable cookie.

La estructura es :

nombre_archivo_configuracion.nombre_array_nivel_superior.variable.

Para acceder a las variables y modificarlas, la fachada Config, dispone del método set, con el cual pasamos un array con dos valores: la ruta de la variable y el valor que estamos asignadole.

Config::set(‘sitios.sitio_mediano.cookie’,
’82828h2922992922n28282’);

Funcion Config()

Se puede acceder también a los parámetros de configuración mediante la función Config(), su diferencia con la fachada es que no usa métodos para ejecutarse

Para devolver los valores:

dd(config(‘sitios.sitio_mediano.cookie’);

 Para asignar valores:

config(‘sitios.sitio_mediano.cookie’,
’82828h2922992922n28282’);

o

config(‘[sitios.sitio_mediano.cookie’=>
’82828h2922992922n28282’]);

Para aprovechar de modo más integro y abarcador, las posibilidades de configuración de Laravel, podemos utilizar las variables de entorno, lo cual protege aún mas nuestros datos y su acceso.

La estructura que nos ofrece Laravel es hacer referencia a los valores que hemos establecido en el archivo env.  donde guardamos las variables de entorno. En nuestro ejemplo nuestro archivo sitios.php quedaría así:

 return [ 
     'sitio_grande' => [ 
                        'url' => env('URL_SITIO_GRANDE'),
                        'cookie' => env('COOKIE_SITIO_GRANDE'),
                        'durac_cookie' => ' env('DURAC_ COOKIE_SITIO_GRANDE')
             ], 
     'sitio_mediano' => [ 
                        'url' => env('URL_SITIO_MEDIANO'),
                        'cookie' => env('COOKIE_SITIO_MEDIANO'),
                        'durac_cookie' => ' env('DURAC_COOKIE_SITIO_MEDIANO')
 ],
     'sitio_pequeño' => [ 
                        'url' => env('URL_SITIO_PEQUEÑO'),
                        'cookie' => env('COOKIE_SITIO_PEQUEÑO'),
                        'durac_cookie' => ' env('DURAC_COOKIE_SITIO_PEQUEÑO')
             ],
     ]; 

Para lograr esto bastara con haber añadido en el archivo env los valores que esperamos recibir.

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

…..subir montañas, hermana hombres……

El uso de Having y Raw

laravel

La combinación de las clausulas having  y  raw, nos ayudará, crear consultas más básicas

Por ejemplo, si necesitamos crear una consulta que devuelva  la cantidad de productos que correspondan a aquellas categorías cuyo id sea mayor de 1.

Podemos entonces construir la consulta de este modo.

 Raw  indicara el carácter directo de la consulta, group by  agrupará  a los productos por categoría, Count  los contará y  Having devolverá aquellos con categoría  >1

SELECT *, COUNT(*) FROM products GROUP BY category_id HAVING count(*) > 1;

DB::table('products')
	->select('*', DB::raw('COUNT(*) as products_count'))
	->groupBy('category_id')
	->having('products_count', '>', 1)
	->get();

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

Subir montañas hermana a los hombres……

Crear Consultas de la base de datos caché

laravel

Laravel simplifica bastante, el acto de crear consultas de la base de datos caché.

Esto permite al framework limitar las consultas repetidas a la base de datos, poniendo a nuestra disposición llamadas al  método que maneja la  caché.

Pongamos como ejemplo que tenemos una tabla ‘consultas’, que se actualiza poco y a la cual necesitamos acceder, muchas veces, para incorporar sus datos en algún analisis.

Lo que nos permite Laravel es almacenar estas consultas en cache  durante  un tiempo, ene nuestro ejemplo colocamos  60 minutos y acceder a ellas mediante el uso de remember, sin tocar la BD

$consultas = Consulta::remember(60)->get();

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

Subir montañas hermana hombres……..

El uso del método update

laravel

El método update es el encargado de retornar las columnas afectadas por un acción, veámoslo debajo

$cantidad = $casas->whereNull('categoria_id')->update(['categoria_id' => 2]);

Aquí update nos devuelve el número de registros o filas donde se cumple el planteamiento, asignar el valor 2 a aquellas casas donde categoría_id es null

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

….Un sueño es más que todo  y casi nada……

Ordenar por tipo de relaciones

laravel

Un modo de organizar los resultados es ordenar por relaciones, esto nos permite tomar por ejemplo el ultimo registro añadido.

Digamos que tenemos un modelo Pedido, relacionado con el modelo Cliente y queremos que nos muestre en la vista los pedidos colocando encima el último.   

Lo primero seria describir la relación entre ambos dentro de la clase Cola

public function lastestPedido()
{
    return $this->hasOne(\App\Pedido::class)->latest();
}

En el controlador  creamos una variable que en su interior tomará los  pedidos según clientes ordenados de forma descendente, según fecha de creación.

$clientes= Cola::with('latestPedido')->get()->sortByDesc('latestPedido.created_at');

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

Subir montañas hermana hombres……

Relaciones con condicionales y ordenadas

laravel

Hablemos de las relaciones con condicionales y ordenadas, no es la forma común en que definimos una relación en Laravel. Lo típico es algo así:

public function camiones() {
    return $this->hasMany('App\Camione');    
}

Sin embargo, esto podemos enriquecerlo si deseamos obtener esa relación ordenada según algún criterio.

Más de Laravel

En el código siguiente lo ordeno por capacidad de carga.

public function contratoCamiones() {
    return $this->hasMany('App\Camiones')->where('contrato', 1)->orderBy('capacidad');
}

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

Subir montañas hermana hombres……

Comandos para crear un proyecto en Laravel

laravel

He aquí dos sencillos comandos para crear un proyecto en Laravel, que siempre nos serán útiles y necesarios.

Crear proyecto

composer create-project --prefer-dist laravel/laravel nombre del proyecto

Crear modelos y toda la estructura al mismo tiempo

php artisan make:model Company-mcr
•	-m  crea el archivo de la migración o sea la tabla
•	-c   crea  el controlador
•	-r   indica que el controlador es un controlador de recurso preparado para un CRUD(create, read, update, delete), compatible con REST

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

subir montañas hermana hombres…..

Instalar una versión anterior en Laravel

laravel

Una de las cuestiones que podemos necesitar hacer es instalar una versión anterior en Laravel.

Las razones pueden ser varias : estudiar las modificaciones entre versión y versión, mantener la compatibilidad de un proyecto, o de un desarrollo previo, testear una app, o como sucede en algunos servidores cloud, adecuarse a la versión de que estos disponen.

La solucion es sencilla y composer nos permite incorporarla al iniciar nuestro proyecto

Basta con añadir a la consola la versión que necesitamos:

 composer create-project laravel/laravel [nombreproyecto] [version.*]

seria algo como esto:

composer create-project laravel/laravel ProyectoTest 6.*

Aquí estamos instalando la versión 6 en su última variante, podríamos escribirlo también asi:

composer create–project laravel/laravel=6.* ProyectoTest

Donde 6 será la versión que necesitamos, acepta  incluso 6.2  o 5.1, y el asterisco indica dentro de ella la que incorpora la última actualización, lo  que significa que se han  reparado los bugs, o sea es una versión Bugfixed.

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

….un sueño es casi todo  y más que  nada, más que todo al soñarlo, casi nada después……

El uso de save

laravel

El método Save,  tiene multiple usos en laravel y es una de esas herramientas que siempre es bueno tener a mano. Aquí les muestro algunos usos

Save con condición

En el siguiente ejemplo le pasamos a una función Save, un array con las opciones , y como puede apreciarse en la función protegida, pasamos el arreglo options condicionandom que si se cumplen determinada condición se actualice el Timestamp, al final a la variable products, le pasamos la función save() con el parámetro que necesitamos.

// src/Illuminate/Database/Eloquent/Model.php
public function save(array $options = [])

// src/Illuminate/Database/Eloquent/Model.php
protected function performUpdate(Builder $query, array $options=[])
{
  if ($this->timestamps && array_get($options, 'timestamps', true))
	{
	  $this->updateTimestamps();
	}
}

$product = Product::find($id);
$product->updated_at = '2015-01-01 00:00:00';
$product->save(['timestamps'=>false]);

Para devolver relaciones de los modelos

En este caso vemos su uso en el método store, donde le indicamos que si el usuario está autenticado guarde el  nuevo Post.

public function store()
{
	$post = new Post;
	$post->fill(Input::all());
	$post->user_id = Auth::user()->user_id;

	$post->user;

	return $post->save();
}

Tiene otros usos más, por ejemplo para insertar registros en la base de datos, dentro de los métodos update o store, en los controladores

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

Subir montañas hermana a los hombres……

Translate »