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……

Ejemplos de uso del pattern

El uso del pattern ofrece un control primario de los campos input de un formulario, y puede ser complementado con el uso de seudo elementos css y funciones js.

Cadena obligatoria variada.

Puede contener letras mayúsculas, minúsculas, números y los caracteres !?-   ,  y un  tamaño  entre 8 y 12 caracteres.

pattern="[A-Za-z0-9!?-]{8,12}" required

cadena obligatoria  de letras minúsculas, con un número opcionalmente de hasta dos dígitos al final. La cadena completa tendrá entre 5 y 12 caracteres

pattern="^([a-z]+[0-9]{0,2}){5,12}$" required

 Cadena compleja para email

pattern="^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" required/

Cadena  para admitir  nombres de cualquier nacionalidad:

Incluye nombres compuestos y la mayoría de normas de acentuación. El número de caracteres será como mínimo 3 y como máximo 32. 

[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]{2,32}

El usuario solo podrá meter una palabra de 4 a 16 caracteres entre la con las letras de A-Z y a-z

pattern=»[A-Za-z]{4-16}

Y listo, esto es todo.

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

Gracias.

…subir montañas hermana hombres…

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……

Propiedad Background

La propiedad Background CSS Una propiedad usada a menudo en css. Una de las más comunes es  background-image, que se encarga de mostrar la imagen de fondo de un elemento.

background asimila solo un valor y es uno de estos tres, URL, none o inherit, su valor inicial es none, y no se hereda

 La imagen que muestra se coloca en el area  que ocupan el contenido  del elemento  hasta copar todo, hasta el borde.

En el caso de que se importe una imagen se usa el patrón URL, que asimila lo mismo  URIs que URLs, ya sean  externas , internas,   relativas o absolutas, según el caso.

Para recoger la URL que conduce a la imagen el formato es  url(direccion), además permite que la dirección como tal se encierre entre comillas, ya sean estas dobles o sencillas

Veamos un ejemplo:

  
 div {
   background-image: url(http://www.mipaginadeimagenes.net/banco/css/imagenes/logo.png);
 }
  
 h2, h3, h4, h5 {
   background-image: url("imagenes/retrato.png");
 }
  
 h2, h3, h4, h5{
   background-image: url('../imagenes/arte.gif');
 } 

Distribucion:

Cuando la imagen de fondo es más grande que el area donde queremos mostrarla, se vera solo la parte que va desde  esquina superior izquierda  a su opuesto y lo hara justo en la esquina superior izquierda del espacio que ocupa el elemento que recibe la imagen:

Si sucede al revés y la imagen es más pequeña que el espacio reservado para ella, el navegador la repetirá,  en todas las direcciones hasta cubrir completamente el espacio del elemento.

Para ayudar a resolver estos dentro de background existen diferentes opciones como   background-repeat,  que permitirá que la imagen se repita o no, background-attachment, permite que se mantenga fija en un su posición o se desplace cuando se mueve el cursor y   background-position, que brinda la posibilidad de modificar la posición por defecto e la imagen

La propiedad Background puede usarse simultáneamente en un area, por ejemplo un div junto a un color de fondo, por  eso es común ver background-image y background-color en un mismo espacio o elemento. En estos casos la imagen tiene prioridad, y el color de fondo solo será visible en aquellas areas de la imagen que sean transparentes por ejemplo al usar imágenes en formato png o en aquellas zonas que no estén cubiertas por la imagen

Usar ambas es una buena práctica, porque permite tener desde el primer momento algo que cubra el elemento. Considerando que puede haber demora en cargar la URL, o un fallo, que exista un color de fondo con una apariencia parecida a la imagen (si fuera posible),  mejorar la experiencia.

Y listo, esto es todo.

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

Gracias.

…., si avanzo sígueme, si me detengo empújame, si retrocedo mátame…….

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……

Entendiendo Vue(componentes)

Intentemos comprender Vue(componentes). La estructura de un componente se compone en esencia de tres partes

Template

Es la plantilla del componente que posee formato html y donde inyectaremos las variables por una de las  vías que Vue nos ofrece.

Clase

La clase es la zona javascript del componente, en ella creamos la variables y las propiedades que insertaremos en la zona html del componente

Estilos

Son los estilos css del componente, necesarios o no en dependencia de la estructura que demos al proyecto, ya que estos estilos también podrían ser asumidos por un archivo css externo.

El  funcionamiento de un componente no es demasiado complejo, y relativamente fácil de comprender.

Tomemos el  ejemplo que nos ofrece Vue por defecto: el componente HelloWorld.vue  allí veremos definidas las tres partes con sus etiquetas de apertura   y cierre, para template, script y style.

Si eliminemos ahora todo lo que está dentro de template,  y solo dejemos la clase hello, para luego revisar en el navegador, veremos que ahora no hay nada ahí.

Vayamos a la clase encerrada dentro de script, ahí veremos que nombre de esa clase coincide con el nombre el componente, y que posee una propiedad, llamada msg, del tipo string, la misma que aparece en  el template, entonces modifiquemosla, añadiendo una  funcion data que nos devuelve una variable llamada bienvenida,  con un texto adentro;

<script>
export default { 
name: 'HelloWorld',
   props: {
      msg: String
   },
  data()
     {
       return     {
         bienvenida:"Estoy aqui"
       }
     }
 }
 </script> 

Luego vamos a incluir esa nueva variable, dentro del template, siguiendo la estructura de las dos llaves que vimos antes.

<h3>{{ bienvenida }}</h3>

Revisemos ahora el navegador y veremos  que nuestra nueva variable aparece allí con su mensaje.

Un elemento a tener en cuenta es, que un componente, se asigna siguiendo la estructura de nodos del  DOM, y  solo puede imprimirse  en un nodo, por tanto no podríamos imprimir dos msg aunque los declaráramos en el script, a no ser que lo incluyéramos dentro de un div, o lo que es lo mismo no podemos escribirlo en  dos etiquetas html

Construyendo un componente

Un componente es un archivo con extensión vue

Lo crearemos dentro de la carpeta components, lo llamaremos ComponenteNuevo.vue, y le daremos luego esta estructura:

<template>
        <div id=”comp-nuevo”>
             <h1> Nuevo componente de calculo </h1>
             <h3> {{ subtitulo }} </h3>
       </div>
  </template>

 <script>
 export default{
       name: "ComponenteNuevo",
       data(){
             return{
                   subtitulo: "Extraer duplicados"
             }
       }
 }
 </script> 

Como puede verse, no definimos los estilos, solo el template y el código js:

Creamos un div con dos etiquetas dentro, donde el segundo de ellos contendrá el valor de la variable subtitulo creada dentro del script.

Dentro de la etiqueta script, además le asignamos  el nombre, que en nuestro caso será el mismo que el componente.

Y ya hecho esto, nos quedará solo inscribir el componente recién creado dentro del archivo App.vue, dándole la url con la ruta.

Y luego insertándolo dentro del listado de componentes con que trabajamos.

Nuestro código queda así:

<script>
 import HelloWorld from './components/HelloWorld.vue'
 import ComponenteNuevo from './components/ComponenteNuevo.vue'
  
 export default {
   name: 'App',
   components: {
     HelloWorld
     ComponenteNuevo
   }
 }
 </script>

Hecho esto, para que se vea en la página, solo falta añadirlo dentro del div app en la zona del template :

<template>
   <div id="app">
     <img alt="Vue logo" src="./assets/logo.png">
     <HelloWorld msg="Welcome to Your Vue.js App"/>
     <ComponenteNuevo> </ComponenteNuevo>
   </div>
 </template> 

</template>

Ahora ya el componente, que en este caso es solo texto será visible.

La condición para reutilizar este componente en otro lugar o dentro de otro componente, es traerlo mediante el import.

Supongamos que quisiéramos mosrarlo dentro del componente que trae Vue, por defecto: HelloWorld, podemos hacer esto:

 <template>
   <div class="hello">
     <h1>{{ msg }}</h1>
     <h3>{{ bienvenida }}</h3>
 //insertamos el componente con un estilo css
     <div style="background-color:#000;color:#fff">
 <ComponenteNuevo></ComponenteNuevo>
 </div>
   </div>
 </template>
  
 <script>
 //Importamos el componente para que pueda ser usado 
 import ComponenteNuevo from './ComponenteNuevo.vue'
 export default {
   name: 'HelloWorld',
 //utilizamos la misma propiedad components que usa app.vue
     components: {
        ComponenteNuevo
   },
   props: {
      msg: String
   },
  data()
     {
       return     {
         bienvenida:"Estoy aqui"
       }
     }
 }
 </script> 

Finalmente entonces, sabemos que:

  • Un componente consta de tres partes: template(html), script(js) y estilos(css)
  • Que un componente es un trozo de código con funcionalidades, y  que se alojará,  en el DOM o la pantalla, en un nodo.
  • Tiene un nombre, terminado con la extensión vue, y que este nombre será utilizado tanto para importarlo como para declararlo dentro del archivo central app.vue, y en aquel que se vaya  a utilizar.
  • Es reutilizable, y eso quiere decir que donde queramos usarlo debemos importarlo.

Espero que este pequeño articulo, le sirva de ayuda a alguien.

Y listo, esto es todo.

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

Gracias.

…. hay que levantarse cada mañana con una esperanza y dormirse cada noche con una meta….

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……

Translate »