<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: TMC</title>
    <description>The latest articles on DEV Community by TMC (@themustachecode).</description>
    <link>https://dev.to/themustachecode</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F631733%2F8103a13f-7e9f-42fd-86f1-540c42821074.jpeg</url>
      <title>DEV Community: TMC</title>
      <link>https://dev.to/themustachecode</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/themustachecode"/>
    <language>en</language>
    <item>
      <title>7 Tips esenciales de Laravel Auth</title>
      <dc:creator>TMC</dc:creator>
      <pubDate>Tue, 03 Aug 2021 12:31:17 +0000</pubDate>
      <link>https://dev.to/themustachecode/7-tips-esenciales-de-laravel-auth-hnj</link>
      <guid>https://dev.to/themustachecode/7-tips-esenciales-de-laravel-auth-hnj</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4irnwb504wb1jkepcz61.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4irnwb504wb1jkepcz61.jpg" alt="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4irnwb504wb1jkepcz61.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Laravel Auth&lt;/strong&gt; es el kit de autenticación de usuarios que nos proporciona el framework Laravel. Tal como especifica la documentación. Este módulo nos permite implementar de manera muy rápida la capa de autenticación de usuarios en nuestras aplicaciones webs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tip 1. Cómo iniciar sesión con un usuario, si tenemos el ID o el objeto Usuario.
&lt;/h2&gt;

&lt;p&gt;Para hacer este inicio de sesión utilizamos los siguientes métodos. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://laravel.com/docs/8.x/authentication#other-authentication-methods" rel="noopener noreferrer"&gt;https://laravel.com/docs/8.x/authentication#other-authentication-methods&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="c1"&gt;# Autenticación de Usuario por id.&lt;/span&gt;

&lt;span class="nc"&gt;Auth&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;loginUsingId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;# Autenticación de Usuario por Objeto Usuario.&lt;/span&gt;

&lt;span class="nc"&gt;Auth&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nc"&gt;Auth&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$remember&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;# Con el helper auth()-&amp;gt;login($user)&lt;/span&gt;

&lt;span class="nf"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Tip 2. Cómo obtener el ID de un usuario autenticado.
&lt;/h2&gt;

&lt;p&gt;Cuando es necesario interactuar con un usuario autenticado, obtener su información o simplemente su ID, utilizamos Auth Facade y el método Auth::user() o el helper auth().&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Illuminate\Support\Facades\Auth&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Retrieve the currently authenticated user...&lt;/span&gt;
&lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Auth&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;user&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Retrieve the currently authenticated user's ID...&lt;/span&gt;
&lt;span class="nv"&gt;$id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Auth&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// También podemos utilizar el helper auth() y así no tenemos que instanciar&lt;/span&gt;
&lt;span class="c1"&gt;// el Facade de Auth, "Esta elección es a gusto de gustos del programador ;)"&lt;/span&gt;
&lt;span class="nf"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;user&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nf"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Tip 3. Cómo verificar un usuario autenticado en Blade.
&lt;/h2&gt;

&lt;p&gt;Tenemos el legendario if(auth()→check()) que está muy bien hacerlo de esta manera en nuestro código. No obstante, te voy a dar una manera más corta que ofrece Laravel, que es simplemente "&lt;a class="mentioned-user" href="https://dev.to/auth"&gt;@auth&lt;/a&gt; y @endauth". Vamos al ejemplo: &lt;/p&gt;

&lt;p&gt;Primera vía, escribiendo if/else en Blade&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;check&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;

&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;endif&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Segunda vía, escribiendo auth&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;auth&lt;/span&gt;

&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;

&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;endauth&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Tip 4. Implementar la verificación de email para nuevos usuarios registrados.
&lt;/h2&gt;

&lt;p&gt;Muchas veces necesitamos que los usuarios verifiquen el correo electrónico con el que se registraron en el app, bien sea por razones de seguridad, o para estar seguros de que las comunicaciones que enviemos al usuario lleguen al buzón de correos de una cuenta existente. Laravel nos ofrece esta implementación haciendo solamente unos pequeños ajustes:&lt;/p&gt;

&lt;p&gt;En el modelo User agregar la interfaz   &lt;code&gt;MustVerifyEmail&lt;/code&gt;   y con esto, al registrar un nuevo usuario en nuestra app, le llegará un email de verificación. &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Authenticatable&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;MustVerifyEmail&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Notifiable&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;También, podemos proteger las rutas, para que solo tengan acceso aquellos usuarios que han sido verificados por email, utilizando el middleware &lt;code&gt;middleware('verified')&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="nc"&gt;Route&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/profile'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Only verified users may access this route...&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;middleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'verified'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Tip 5. Confirmación extra de contraseña.
&lt;/h2&gt;

&lt;p&gt;En algunas ocasiones necesitamos poner una verificación de seguridad en alguna ruta. Por ejemplo, un usuario quiere modificar alguna información importante y queremos asegurarnos de que se trate de él. Para comprobar este paso, podemos volver a pedir su contraseña y Laravel tiene un middleware llamado &lt;code&gt;password.confirm&lt;/code&gt; que realiza esta verificación. &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="nc"&gt;Route&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/settings'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;middleware&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'password.confirm'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

&lt;span class="nc"&gt;Route&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/settings'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;middleware&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'password.confirm'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Tip 6. Cómo crear un usuario desde la consola de Tinker.
&lt;/h2&gt;

&lt;p&gt;Trabajando con Laravel en algún momento, te encontrarás con la necesidad de crear un usuario sin utilizar el formulario de registro, más aun si estás escribiendo tests en tu aplicación. &lt;/p&gt;

&lt;p&gt;Si vamos al seeder de usuario encontraremos esta línea:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="nc"&gt;\App\Models\User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;factory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;La cual invoca el &lt;code&gt;User::factory&lt;/code&gt; y crea 10 usuarios con información ficticia al momento que ejecutemos los seeder de la base de datos.&lt;/p&gt;

&lt;p&gt;Pero, si necesitamos crear uno y tal vez pasar alguna información que no queremos que sea falsa, por ejemplo: el email, podemos ejecutar directamente el &lt;code&gt;User::factory&lt;/code&gt; desde la consola de Tinker y crearlo, como en el siguiente ejemplo: &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;factory&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'email'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'test-2@mail.com'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Tip 7. Reforzando las validaciones de contraseñas.
&lt;/h2&gt;

&lt;p&gt;A partir de &lt;strong&gt;Laravel 8&lt;/strong&gt; tenemos disponible un objeto que permite modificar la complejidad de las contraseñas en nuestras aplicaciones. Además, puede asegurarnos de que la contraseña no se haya visto comprometida en fugas de datos:&lt;/p&gt;

&lt;p&gt;Este objeto tiene los siguientes métodos:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;validate&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="c1"&gt;// Hace que la contraseña requiera al menos una letra mayúscula y una minúscula.&lt;/span&gt;
    &lt;span class="s1"&gt;'password'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'confirmed'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Password&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nb"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;mixedCase&lt;/span&gt;&lt;span class="p"&gt;()],&lt;/span&gt;

    &lt;span class="c1"&gt;// Hace que la contraseña requiera al menos una letra.&lt;/span&gt;
    &lt;span class="s1"&gt;'password'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'confirmed'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Password&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nb"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;letters&lt;/span&gt;&lt;span class="p"&gt;()],&lt;/span&gt;

    &lt;span class="c1"&gt;// Hace que la contraseña requiera al menos un número&lt;/span&gt;
    &lt;span class="s1"&gt;'password'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'confirmed'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Password&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nb"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;()],&lt;/span&gt;

    &lt;span class="c1"&gt;/// Hace que la contraseña requiera al menos un símbolo.&lt;/span&gt;
    &lt;span class="s1"&gt;'password'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'confirmed'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Password&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nb"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;symbols&lt;/span&gt;&lt;span class="p"&gt;()],&lt;/span&gt;

    &lt;span class="c1"&gt;// Garantiza que la contraseña no se haya visto comprometida en fugas de datos.&lt;/span&gt;
    &lt;span class="s1"&gt;'password'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'confirmed'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Password&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nb"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;uncompromised&lt;/span&gt;&lt;span class="p"&gt;()],&lt;/span&gt;
&lt;span class="p"&gt;]);&lt;/span&gt;&lt;span class="n"&gt;ara&lt;/span&gt; &lt;span class="n"&gt;usarlo&lt;/span&gt; &lt;span class="n"&gt;solo&lt;/span&gt; &lt;span class="n"&gt;hay&lt;/span&gt; &lt;span class="n"&gt;que&lt;/span&gt; &lt;span class="n"&gt;agregar&lt;/span&gt; &lt;span class="n"&gt;los&lt;/span&gt; &lt;span class="n"&gt;métodos&lt;/span&gt; &lt;span class="n"&gt;en&lt;/span&gt; &lt;span class="n"&gt;en&lt;/span&gt; &lt;span class="n"&gt;nuestras&lt;/span&gt; &lt;span class="n"&gt;reglas&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;validaciones&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;por&lt;/span&gt; &lt;span class="n"&gt;ejemplo&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Para implementarlo utilizamos estos métodos en las validaciones que están en los controladores, de la siguiente manera:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;store&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Request&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;validate&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
            &lt;span class="s1"&gt;'name'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'required|string|max:255'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'email'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'required|string|email|max:255|unique:users'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'password'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'confirmed'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Password&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nb"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;mixedCase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;letters&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;symbols&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;uncompromised&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
            &lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;]);&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;¿Sabes otros interesantes tips sobre Laravel Auth? Compártelo en los comentarios.👨🏽‍💻 🙌🏼&lt;/p&gt;

&lt;p&gt;Espero que pongas en práctica estos tips en tu proyectos. Nos vemos en un próximo post. &lt;/p&gt;

&lt;p&gt;Hasta la próxima coders!&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
    </item>
    <item>
      <title>Mi Top de 7 extensiones de VS Code para Laravel mid 2021.</title>
      <dc:creator>TMC</dc:creator>
      <pubDate>Sat, 17 Jul 2021 01:36:43 +0000</pubDate>
      <link>https://dev.to/themustachecode/mi-top-de-7-extensiones-de-vs-code-para-laravel-mid-2021-2fca</link>
      <guid>https://dev.to/themustachecode/mi-top-de-7-extensiones-de-vs-code-para-laravel-mid-2021-2fca</guid>
      <description>&lt;p&gt;Hola developer y bienvenidos a &lt;strong&gt;The Mustache Code&lt;/strong&gt;, hoy te voy a compartir mi top 7 de extensiones de &lt;strong&gt;VSCode&lt;/strong&gt; para mejorar nuestro flujo de trabajo en &lt;strong&gt;Laravel&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  1 - Laravel Blade Snippets:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=onecentlin.laravel-blade"&gt;https://marketplace.visualstudio.com/items?itemName=onecentlin.laravel-blade&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Plugin esencial para el trabajo con los archivos &lt;strong&gt;Blade&lt;/strong&gt; de &lt;strong&gt;Laravel&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Este plugin tiene más de un millón de descargas en el marketplace a la fecha, y el tiempo que ahorra cuando estamos  trabajando con las vistas en blade es impresionante. &lt;/p&gt;

&lt;p&gt;Por eso esta extensión está de primera en mi lista!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Características:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Permite el funcionamiento de Emmet.&lt;/li&gt;
&lt;li&gt;Auto completado de sintaxis de Blade.&lt;/li&gt;
&lt;li&gt;Atajos de comandos en blade.&lt;/li&gt;
&lt;li&gt;Sangrado o Indentación de código en las vistas de blade.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2 - Laravel Snippets
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=onecentlin.laravel5-snippets"&gt;https://marketplace.visualstudio.com/items?itemName=onecentlin.laravel5-snippets&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Un plugin con más de setecientas mil descargas a la fecha en el marketplace, también es muy popular en la comunidad de &lt;strong&gt;Laravel&lt;/strong&gt; para quienes usamos como editor &lt;strong&gt;VSCode.&lt;/strong&gt; Esta extensión al igual que &lt;strong&gt;Laravel Blade Snippets&lt;/strong&gt; son creados por Winnie Lin 👨🏽‍💻 . Cuenta con autocompletado para todos los métodos más comunes como por ejemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auth&lt;/li&gt;
&lt;li&gt;Broadcast&lt;/li&gt;
&lt;li&gt;Cache&lt;/li&gt;
&lt;li&gt;Config&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;y esta lista se extiende hasta los métodos de las Vistas "View".&lt;/p&gt;

&lt;h2&gt;
  
  
  3 - Laravel Blade Spacer
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=austenc.laravel-blade-spacer"&gt;https://marketplace.visualstudio.com/items?itemName=austenc.laravel-blade-spacer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;El funcionamiento de este plugin es bastante simple, su funcionalidad es que ahorra tener que agregar los espacios después de las dobles llaves { {espacio $variable espacio} } cuando queremos colocar sentencias de php en los archivos Blade. Esto hará que tu código sea más uniforme y consistente.&lt;/p&gt;

&lt;h2&gt;
  
  
  4 - Laravel Artisan
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=ryannaddy.laravel-artisan"&gt;https://marketplace.visualstudio.com/items?itemName=ryannaddy.laravel-artisan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este plugin nos permite ejecutar comandos de Artisan directamente en la consola de comandos de &lt;strong&gt;VSCode&lt;/strong&gt; sin necesidad de cambiarnos a la terminal, también tiene auto completado, esta función para los nuevos desarrolladores es muy practica y ayuda al aprendizaje de los comandos de &lt;strong&gt;Artisan&lt;/strong&gt; en &lt;strong&gt;Laravel&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 - Laravel Extra Intellisense
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=amiralizadeh9480.laravel-extra-intellisense"&gt;https://marketplace.visualstudio.com/items?itemName=amiralizadeh9480.laravel-extra-intellisense&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Poderoso plugin de auto completado que tiene soporte para variables, modelos, vistas, rutas, middleware, configuraciones y más. Es una herramienta bastante útil y hace que nuestro desarrollo sea mucho más fluido.&lt;/p&gt;

&lt;h2&gt;
  
  
  6 - DotEnv
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=mikestead.dotenv"&gt;https://marketplace.visualstudio.com/items?itemName=mikestead.dotenv&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este plugin nos ayuda visualmente con nuestro archivo .env tiene resaltado de variables y marcado de errores en caso de que metamos una cabra 🐐 en nuestro archivo &lt;strong&gt;.env&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  7 - Tinkerun
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=tinkerun.tinkerun-vscode"&gt;https://marketplace.visualstudio.com/items?itemName=tinkerun.tinkerun-vscode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este plugin te permite ejecutar comandos de &lt;strong&gt;Artisan Tinker&lt;/strong&gt; directamente en &lt;strong&gt;VSCode&lt;/strong&gt;, al igual permite correr consultas de eloquent o rutinas de varias lineas de código. También al colocar tus scripts en archivos de php dentro de &lt;strong&gt;Tinkerun&lt;/strong&gt; los puedes guardar para ejecutarlos en cualquier momento que necesites.  Es gratuito y muy intuitivo.&lt;/p&gt;

&lt;p&gt;¿Sabes de otro plugin que debería de agregar a mi lista? Puedes dejarlo en los comentarios, y nos vemos en un próximo post. 👨🏽‍💻 🙌🏼&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Convenciones de nombre... ¿Como debo de nombrar o llamar las "cosas" en Laravel?</title>
      <dc:creator>TMC</dc:creator>
      <pubDate>Fri, 28 May 2021 13:34:41 +0000</pubDate>
      <link>https://dev.to/themustachecode/convenciones-de-nombre-como-debo-de-nombrar-o-llamar-las-cosas-en-laravel-nkp</link>
      <guid>https://dev.to/themustachecode/convenciones-de-nombre-como-debo-de-nombrar-o-llamar-las-cosas-en-laravel-nkp</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2lz48660f7iwv890sfg3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2lz48660f7iwv890sfg3.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Partiendo de estas cuatro convenciones de nombres más utilizadas en la programación, las cuales son: &lt;/p&gt;

&lt;p&gt;🐪 camelCase&lt;/p&gt;

&lt;p&gt;🍢 kebab-case&lt;/p&gt;

&lt;p&gt;👨🏼‍🏫 PascalCase&lt;/p&gt;

&lt;p&gt;🐍 snake_case&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo llamar a los Modelos?
&lt;/h2&gt;

&lt;p&gt;En Laravel los modelos debe llamarse en singular, sin espacios entre las palabras y utilizando la estrategia de combinación de palabras llamada "&lt;strong&gt;PascalCase".&lt;/strong&gt;&lt;br&gt;
✅&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;BlogPost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Product&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;ProductCategory&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;🚫&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="nc"&gt;Users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blogsPost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;product_categories&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Tip importante:&lt;/strong&gt; Procurar utilizar nombres en ingles para llamar las cosas y de esta manera aseguras que tu código va poder ser comprendido con mayor facilidad por otros desarrolladores. &lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo llamar a las propiedades en los Modelos?
&lt;/h2&gt;

&lt;p&gt;Estas debemos llamarlas en minúsculas y "&lt;strong&gt;snake_case&lt;/strong&gt;", simplemente debemos seguir la convención que existe en las columnas de la base de datos. Por ejemplo:&lt;br&gt;
✅&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;updated_at&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;🚫&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;updatedAt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;Email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;ProductName&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  ¿Cómo llamar los métodos utilizados en los modelos?
&lt;/h2&gt;

&lt;p&gt;Todos los métodos que creemos en nuestro proyecto dentro de Laravel, debemos de llamarlos utilizando la convención camelCase. Por ejemplo: &lt;br&gt;
✅&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;getUserByEmail&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;🚫&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;Index&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;get_user_by_email&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Tip importante:&lt;/strong&gt; Dentro de los tests, debemos llamar a los métodos utilizando la convención "&lt;strong&gt;snake_case&lt;/strong&gt;";&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cómo llamar a los controladores?
&lt;/h2&gt;

&lt;p&gt;Los controladores que creemos en Laravel deben de ser singulares, con la convención "&lt;strong&gt;PascalCase"&lt;/strong&gt; y terminar con la palabra "&lt;strong&gt;Controller&lt;/strong&gt;".&lt;br&gt;
✅&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="nc"&gt;UserController&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;ProductController&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;BlogController&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;🚫&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="n"&gt;userController&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blog_controller&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;productController&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;auth_Controlle&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  ¿Cómo nombrar las tablas de las bases de datos?
&lt;/h2&gt;

&lt;p&gt;Las tablas de la base de datos deben de ser nombradas en plural y utilizando la convención "&lt;strong&gt;sanke_case&lt;/strong&gt;".&lt;br&gt;
✅&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;categories&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;failed_jobs&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;🚫&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="nc"&gt;Users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;failedJobs&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Caso para las tablas pivote:
&lt;/h3&gt;

&lt;p&gt;Las tablas pivotes deben de nombrarse en singular, alfabeticamente según cada modelo que se utilice y utilizando la convención "&lt;strong&gt;snake_case&lt;/strong&gt;".&lt;br&gt;
✅&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="n"&gt;post_user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blog_category&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;category_product&lt;/span&gt; 


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;🚫&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="n"&gt;postUser&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;BlogCategory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;product_category&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>laravel</category>
      <category>codequality</category>
    </item>
  </channel>
</rss>
