Hacer override de update_at con save

El método save(), acepta parámetros, ello nos permite decirle que ignore el la asignación que hace update_at por defecto, tomando la fecha y momento actual, haciendo esto, lo cual nos permite hacer un override del update, sin mayores problemas:

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

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 when

When() es una de los métodos con los que Laravel, sorprende a los que comienzan, yo recurro a él cada vez que puedo por la potencia que aporta, ya que acepta parámetros y crea un código mas reusable.    

Veamos por ejemplo que si queremos introducir una condicional del tipo if else,  en un código podemos escribir algo asi enlazando ifs:

En el primer caso estamos diciendo algo como esto: Si filtramos lo que trae el request, por la columna likes, el valor de la variable query acogerá,    aquellos registros  en que likes, sea mayor que el valor de request donde likes_amount sea 0

if (request('filter_by') == 'likes') {
    $query->where('likes', '>', request('likes_amount', 0));
}
if (request('filter_by') == 'date') {
    $query->orderBy('created_at', request('ordering_rule', 'desc'));
}

Aquí estamos enlazando dos condiciones, que consideran el valor de unos campos para decidir que hacer.
Si usaramos when lo escribiríamos asi:

$query = Author::query();
$query->when(request('filter_by') == 'likes', function ($q) {
    return $q->where('likes', '>', request('likes_amount', 0));
});

$query->when(request('filter_by') == 'date', function ($q) {
    return $q->orderBy('created_at', request('ordering_rule', 'desc'));
});

Y lo que estamos diciendo es que la variable query, aplicará al modelo Author el método query, y que cuando el valor ejecute el filter_by a la columna likes dentro del metodo request, la función anónima se le pasara como parámetro una variable $q cuyo valor seran aquellos registros donde likes sea mayor que la likes_amount igual 0

Como vemos $q es una variable comodin que soporta el peso de la función, pues su valor variara en función del resultado.

$query = Producto::query();
$query->when(request('marca', false), function ($q, $marca) { 
    return $q->where('marcas_id', $marca);
});
$store = $query->get();

Y listo, esto es todo.

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

Gracias.

Subir montañas hermana hombres……

Buenas prácticas para desarrollar en Laravel

Después de un tiempo desarrollando en Laravel y recuperando opiniones de otros y mi propia experiencia, aquí dejo algunos de losm que considero buenas prácticas de programación en este framework

  1. Leer la documentación de Laravel, es sencilla y clara y brinda mucha información que necesitaras. Usarla como tutorial siempre a mano puede ser de gran ayuda.  
  2. Utilizar la estructura que Laravel ofrece para organizar el código por carpetas, con el enfoque que Laravel ofrece.
  3. Aprende y utiliza bien el sistema de autenticación de Laravel.
  4. Cumplir las políticas y salidas de Laravel.
  5. Mantener y los controladores y comandos ligeros. Es preferible transferir la mayor parte de la lógica a las clases, los modelos o las políticas o puertas de salida y enlace.
  6. Utilice los patrones  de migración y herramientas de Eloquent en vez de usar directamente  SQL.
  7. Usar los traits, para compartir la lógica y el comportamiento de los modelos.
  8. Aprovechar las ventajas de la metodología de frontend, basada en componentes de javascript, en vez de abusar del uso de Blade, Laravel esta preparado para integrarse a Vue, React, incluso  Angular.
  9. Explote al máximo las  prácticas REST en sus controladores y use tantos controladores como necesite, tambien aproveche a los controladores de acción única :__invoke()
  10. Establezca principios coherentes para obtener las  respuestas de las solicitudes, que ofrece Laravel, como la API JSON y use UUID, cuando pueda.
  11. Cree componentes, lo que facilitara, la estructura de su código, y su consumo, por la aplicación.
  12. Utilice comandos para tareas manuales, incluso para aquellas que algunas que pueden ser programadas, ya que pueden servirle para aliviar la carga de su aplicación.
  13. Resuelva el problema n+1, siguiendo la documentación de ayuda, ya que Eloquent, no tiene filtro para limitar  las consultas sql, por tanto hay que prestar atención  a la cargas del tipo lazy y eager.
  14. Aprender y usar los comandos de Artisan y sus utilidades.
  15. Oculte la estructura de la base de datos a través de objetos de respuesta
  16. Laravel permite desarrollar fachadas propias, el desconocimiento a veces invita a crearlas. No haga abuso de ellas, si puede implementar el uso de los métodos de una fachada ya predefinida por Laravel.
  17. Use paquetes de terceros con moderación y solo aquellos que estén bien mantenidos.
  18. Haga pruebas, escriba pruebas para todo cuanto desarrolle.
  19. Comente  el código de manera explicita.
  20. Documéntese, estudie. Una buena referencia son los sitios de Laracon en Youtube, los foros de los foros en el sitio de Jeffrey Way, Laracasts.com,  los foros de Vuejs.org , el foro de  Adam Wathan para Laravel, Vue, Tailwind y  el de Wes Bos para Javascript. Pueden serle útiles. Algunos serán de pago, pero pueden valer la pena.

Y listo, esto es todo.

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

Gracias.