<?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: Lathindu Pramduitha</title>
    <description>The latest articles on DEV Community by Lathindu Pramduitha (@lathindu1).</description>
    <link>https://dev.to/lathindu1</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%2F576480%2Fe23bfd19-b581-4d8f-92a3-93f1110e2f9e.jpg</url>
      <title>DEV Community: Lathindu Pramduitha</title>
      <link>https://dev.to/lathindu1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lathindu1"/>
    <language>en</language>
    <item>
      <title>Laravel Best Practice [Coding Standards Part 02] 🧑‍🦰👩‍🦰</title>
      <dc:creator>Lathindu Pramduitha</dc:creator>
      <pubDate>Mon, 19 Apr 2021 17:52:37 +0000</pubDate>
      <link>https://dev.to/lathindu1/laravel-best-practice-coding-standards-part-02-a40</link>
      <guid>https://dev.to/lathindu1/laravel-best-practice-coding-standards-part-02-a40</guid>
      <description>&lt;p&gt;Hello friends, This is the &lt;strong&gt;second&lt;/strong&gt; article of &lt;strong&gt;Laravel coding standards&lt;/strong&gt; article series. &lt;/p&gt;

&lt;p&gt;If you didn't see the first article, I recommend to read it for best practice.&lt;/p&gt;

&lt;h4&gt;
  
  
  Laravel Best Practice Article 01 =&amp;gt; &lt;a href="https://dev.to/lathindu1/laravel-best-practice-coding-standards-part-01-304l"&gt;Click Here To Open Article&lt;/a&gt;
&lt;/h4&gt;

&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%2Fuhvobpcrgn8m83cpio5a.gif" 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%2Fuhvobpcrgn8m83cpio5a.gif" alt="arraow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Article 02: Principles should adhere.✊
&lt;/h1&gt;

&lt;p&gt;Here I will talk about &lt;strong&gt;some principles&lt;/strong&gt; which are developer &lt;strong&gt;should follow&lt;/strong&gt;.&lt;/p&gt;

&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%2Fsu6t2d5vzd2f6luhbipf.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%2Fsu6t2d5vzd2f6luhbipf.jpg" alt="pK-gMzy3meGp1rdP21xe1TUB9Dde408OFq4S"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  01 Don't Use Validations Inside Controller 👈
&lt;/h2&gt;

&lt;p&gt;When I review my junior developer's code, I have seen there are bunch of validators in the controller. Some time they just google the issue and copy things from Stackowerflow  or some where and put in the code without investigating about it. so that's the main problem which I seen with them.&lt;/p&gt;

&lt;p&gt;Here You may see some &lt;strong&gt;Bad&lt;/strong&gt; code which are used &lt;strong&gt;validator&lt;/strong&gt; in controller.&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;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="nc"&gt;Validator&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;make&lt;/span&gt;&lt;span class="p"&gt;(&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="s1"&gt;'first_name'&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;'string'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'max:255'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="s1"&gt;'last_name'&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;'string'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'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="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;'string'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'email'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'max:255'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'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;'string'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Password&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="p"&gt;])&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="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;store&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;all&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;so this is not a correct way to put validator.&lt;br&gt;
we should use Customer Request to handle Validators.&lt;/p&gt;
&lt;h6&gt;
  
  
  01 Create Custom Request. 👈
&lt;/h6&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan make:request UserCreateRequest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;above as a request name. you may use actual scenario . ex-: if you want to handle user update form request. You may create Request as &lt;strong&gt;UserUpdateRequest&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once Created Request from the command. you can see &lt;strong&gt;UserCreateRequest&lt;/strong&gt; inside your &lt;strong&gt;project root -&amp;gt; app -&amp;gt; Http -&amp;gt; Requests&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="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="kn"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;App\Http\Requests&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;Illuminate\Foundation\Http\FormRequest&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserCreateRequest&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;FormRequest&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cd"&gt;/**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */&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;authorize&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="cd"&gt;/**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */&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;rules&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&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="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;In the class you may see two prebuilt functions called &lt;br&gt;
&lt;strong&gt;authorize()&lt;/strong&gt; and &lt;strong&gt;rules()&lt;/strong&gt; .&lt;/p&gt;
&lt;h6&gt;
  
  
  02 Allow CSRF 👈
&lt;/h6&gt;

&lt;p&gt;in &lt;strong&gt;authorize()&lt;/strong&gt; function you need to change return as &lt;strong&gt;true&lt;/strong&gt; .&lt;/p&gt;

&lt;p&gt;otherwise your request will not work.&lt;/p&gt;
&lt;h6&gt;
  
  
  03 Add Validation Rules. 👈
&lt;/h6&gt;

&lt;p&gt;You can add validation methods inside &lt;strong&gt;rules()&lt;/strong&gt; function.&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;rules&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="s1"&gt;'first_name'&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;'string'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'max:255'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="s1"&gt;'last_name'&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;'string'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'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="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;'string'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'email'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'max:255'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'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;'string'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Password&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="p"&gt;];&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

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

&lt;/div&gt;

&lt;h6&gt;
  
  
  04 Add Custom Validation Messages. 👈
&lt;/h6&gt;

&lt;p&gt;Then you can add custom validation messages for every input, every validation methods. here you need to override &lt;strong&gt;message()&lt;/strong&gt; function  from formRequest Trait.&lt;/p&gt;

&lt;p&gt;and add messages by mentioning inputs and rules separating by dots.&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;messages&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="s2"&gt;"first_name.required"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"User first name is required"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s2"&gt;"first_name.string"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"User first name type must be a string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s2"&gt;"email.unique"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"This email is already used."&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;Finally &lt;strong&gt;UserCreateRequest&lt;/strong&gt; may be like this.&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="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="kn"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;App\Http\Requests&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;Illuminate\Foundation\Http\FormRequest&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserCreateRequest&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;FormRequest&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cd"&gt;/**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */&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;authorize&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="cd"&gt;/**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */&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;rules&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="s1"&gt;'first_name'&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;'string'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'max:255'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="s1"&gt;'last_name'&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;'string'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'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="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;'string'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'email'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'max:255'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'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;'string'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Password&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="p"&gt;];&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="cd"&gt;/**
     * Get custom messages for validator errors.
     *
     * @return array
     */&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;messages&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="s2"&gt;"first_name.required"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"User first name is required"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s2"&gt;"first_name.string"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"User first name type must be a string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s2"&gt;"email.unique"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"This email is already used."&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;span class="p"&gt;}&lt;/span&gt;

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

&lt;/div&gt;


&lt;p&gt;Now You Can use &lt;strong&gt;UserCreateRequest&lt;/strong&gt; inside controller&lt;br&gt;&lt;br&gt;
function.&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="cd"&gt;/**
     * Store Customer
     *
     * @param  UserCreateRequest $request
     * @return User
     */&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;store&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;UserCreateRequest&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;store&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;all&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;With this custom request you can have lot's of complex logics, rules inside it.&lt;/p&gt;

&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%2F5vkm0psp0m81ohdeyruj.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%2F5vkm0psp0m81ohdeyruj.jpg" alt="images"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  02 Use Config, Constants, Language Files without complexing code. 👈
&lt;/h2&gt;

&lt;p&gt;let's say you are adding users to database with number of status.&lt;/p&gt;

&lt;p&gt;like &lt;strong&gt;ApprovalPending&lt;/strong&gt; , &lt;strong&gt;Approved&lt;/strong&gt; , &lt;strong&gt;Declined&lt;/strong&gt; , &lt;strong&gt;ReSubmitted&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This the &lt;strong&gt;Bad&lt;/strong&gt; way which lot's of juniors are doing.&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;switch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;// do the things for Pending status&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;// do the things for Approved status&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;// do the things for Declined status&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;// do the things for Resubmitted status&lt;/span&gt;
        &lt;span class="k"&gt;break&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;above you may see if we changed integer for related status, we must change the switch function also for correct the status, and also if comments deleted by some how, you don't know what happened in case 1, what happened in case 2 like this.&lt;/p&gt;

&lt;p&gt;to avoid this we can use Constant Variable which is defined inside related model.&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;CONST&lt;/span&gt; &lt;span class="no"&gt;STATUS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s2"&gt;"ApprovalPending"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;"Approved"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;"Declined"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;"ReSubmitted"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;4&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;Then you can use STATUS variable inside the switch case anywhere.&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;switch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;STATUS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'ApprovalPending'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;// do the things for Pending status&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;STATUS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'Approved'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;// do the things for Approved status&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;STATUS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'Declined'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;// do the things for Declined status&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;STATUS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'ReSubmitted'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;// do the things for Resubmitted status&lt;/span&gt;
        &lt;span class="k"&gt;break&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;&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%2Fl4xif2pxe28ue6lmanv2.png" 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%2Fl4xif2pxe28ue6lmanv2.png" alt="identify_sqlitebrowser"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  03 Don't Execute Queries inside blade files. 👈
&lt;/h2&gt;

&lt;p&gt;lot's of junior developers are doing this thing without looking about it.&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="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Customer&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$customer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;$customer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;street_address&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;
&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;endforeach&lt;/span&gt;

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

&lt;/div&gt;


&lt;p&gt;This code is fine there no any issue. but let's look in to deep. This will execute &lt;strong&gt;1001 queries&lt;/strong&gt; for &lt;strong&gt;1000 customers&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="nv"&gt;$customers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Customer&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;with&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'address'&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;get&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$customers&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$customer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;$customer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;street_address&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;
&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;endforeach&lt;/span&gt;

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

&lt;/div&gt;


&lt;p&gt;This is perfect. This will execute only &lt;strong&gt;2 queries&lt;/strong&gt; for &lt;strong&gt;1000 of customers&lt;/strong&gt; . &lt;/p&gt;

&lt;p&gt;Above I talked about 3 main issues which junior developers are doing mostly.&lt;/p&gt;

&lt;p&gt;I hope you find my post useful! Any feedback is greatly appreciated!&lt;/p&gt;
&lt;h2&gt;
  
  
  You may Find my Upwork Profile Here.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.upwork.com/freelancers/lathindu" rel="noopener noreferrer"&gt;https://www.upwork.com/freelancers/lathindu&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;below I mentioned my other articles. you may also read them.&lt;/p&gt;
&lt;h1&gt;
  
  
  Other Articles 👈👈👈
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Laravel Best Practice &lt;a href="https://dev.to/lathindu1/laravel-best-practice-coding-standards-part-01-304l"&gt;Coding Standards Part 01 &lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MetaMask Integration With Laravel Part2 &lt;a href="https://dev.to/lathindu1/validate-metamask-transactions-with-etherscan-metamask-integration-with-laravel-part-2-25h6"&gt;Click Here&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MetaMask Integration With Laravel Part1 &lt;a href="https://dev.to/lathindu1/metamask-integration-with-laravel-4mng"&gt;Click Here&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here I'm Adding Public GitHub Repository which will store all of my tutorials. you may clone it and see every tutorials what I will publish 🤗.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository&lt;/strong&gt; &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/lathindu1" rel="noopener noreferrer"&gt;
        lathindu1
      &lt;/a&gt; / &lt;a href="https://github.com/lathindu1/tutorials" rel="noopener noreferrer"&gt;
        tutorials
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Tutorials&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Here I will show all the code blocks of my tutorials. you can copy anything or learn anything.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Articles&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/lathindu1/metamask-integration-with-laravel-4mng" rel="nofollow"&gt;How To Connect Metamask With Laravel(Part 01 Connect And Make A Transaction) &lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/lathindu1/validate-metamask-transactions-with-etherscan-metamask-integration-with-laravel-part-2-25h6" rel="nofollow"&gt;How To Connect Metamask With Laravel(Part 02 Validate Transactions) &lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/lathindu1/tutorials" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;&lt;strong&gt;Thank You Very much&lt;/strong&gt;.&lt;br&gt;
--Lathindu Pramuditha--&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Profile&lt;/strong&gt; &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/lathindu1" rel="noopener noreferrer"&gt;
        lathindu1
      &lt;/a&gt; / &lt;a href="https://github.com/lathindu1/lathindu1" rel="noopener noreferrer"&gt;
        lathindu1
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      It's About Lathindu Pramuditha's Account
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt; ආයුබෝවන් (Welcome)🙏🏻, I'm Lathindu Pramuditha Amarasekara! &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/d9b2e380223b298601860a25d75c53ac30edd7633be4964552450e5becd80733/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f31326f75664342304d795a31476f2f67697068792e676966"&gt;&lt;img src="https://camo.githubusercontent.com/d9b2e380223b298601860a25d75c53ac30edd7633be4964552450e5becd80733/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f31326f75664342304d795a31476f2f67697068792e676966" width="50"&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9939f57a40461f1f7d5ee9c81e8f4634eb6a9339f5a3ced15f2ce471bb18b49b/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f4d3967624264396e6244724f5475314d71782f67697068792e676966"&gt;&lt;img src="https://camo.githubusercontent.com/9939f57a40461f1f7d5ee9c81e8f4634eb6a9339f5a3ced15f2ce471bb18b49b/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f4d3967624264396e6244724f5475314d71782f67697068792e676966" width="230"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Founder, CEO AT &lt;a href="https://axcertro.com" rel="nofollow noopener noreferrer"&gt;Axcertro&lt;/a&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/ad38c424479dba43b6ded15fecfde6b53cf9fcd6ff3dc7715d5bcb43f8bbefb8/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f57556c706c634d704f43456d5447427442572f67697068792e676966"&gt;&lt;img src="https://camo.githubusercontent.com/ad38c424479dba43b6ded15fecfde6b53cf9fcd6ff3dc7715d5bcb43f8bbefb8/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f57556c706c634d704f43456d5447427442572f67697068792e676966" width="30"&gt;&lt;/a&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.linkedin.com/in/lathindu-pramuditha/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0df4053d5680797de26b804b272c84108686dcb6d6766d0cee58b67fc191a071/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2d6c617468696e64752d626c75653f7374796c653d666c61742d737175617265266c6f676f3d4c696e6b6564696e266c6f676f436f6c6f723d7768697465266c696e6b3d68747470733a2f2f7777772e6c696e6b6564696e2e636f6d2f696e2f6c617468696e64752d7072616d7564697468612f" alt="Linkedin: lathindu-pramuditha"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/12046fca2e9da79394cbd30157e191d0c4889550a14711737774319b67e980bb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f6c6c6f776572732f6c617468696e6475313f6c6162656c3d466f6c6c6f77267374796c653d736f6369616c"&gt;&lt;img src="https://camo.githubusercontent.com/12046fca2e9da79394cbd30157e191d0c4889550a14711737774319b67e980bb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f6c6c6f776572732f6c617468696e6475313f6c6162656c3d466f6c6c6f77267374796c653d736f6369616c" alt="GitHub followers"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/af3afafbc74a476403a29fbcd54e87fc033ed937227e4cc3d329fa442e7299e3/68747470733a2f2f76697369746f722d62616467652e676c697463682e6d652f62616467653f706167655f69643d6c617468696e6475312e6c617468696e647531"&gt;&lt;img src="https://camo.githubusercontent.com/af3afafbc74a476403a29fbcd54e87fc033ed937227e4cc3d329fa442e7299e3/68747470733a2f2f76697369746f722d62616467652e676c697463682e6d652f62616467653f706167655f69643d6c617468696e6475312e6c617468696e647531" alt=""&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/anmol098/anmol098/workflows/Waka%20Readme/badge.svg"&gt;&lt;img src="https://github.com/anmol098/anmol098/workflows/Waka%20Readme/badge.svg" alt="Waka Readme"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/6f9296a4c8b352a3a335f257ccf592c010c5f578a17a2f8d7ef407efe5dbe6a9/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f56674344417a634b767352364f4d307557672f67697068792e676966"&gt;&lt;img src="https://camo.githubusercontent.com/6f9296a4c8b352a3a335f257ccf592c010c5f578a17a2f8d7ef407efe5dbe6a9/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f56674344417a634b767352364f4d307557672f67697068792e676966" width="50"&gt;&lt;/a&gt; A little more about me...&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-text-html-php notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;namespace&lt;/span&gt; &lt;span class="pl-v"&gt;App&lt;/span&gt;\&lt;span class="pl-v"&gt;Models&lt;/span&gt;
&lt;span class="pl-k"&gt;use&lt;/span&gt; &lt;span class="pl-v"&gt;Illuminate&lt;/span&gt;\&lt;span class="pl-v"&gt;Database&lt;/span&gt;\&lt;span class="pl-v"&gt;Eloquent&lt;/span&gt;\&lt;span class="pl-v"&gt;Factories&lt;/span&gt;\&lt;span class="pl-v"&gt;HasFactory&lt;/span&gt;;
&lt;span class="pl-k"&gt;use&lt;/span&gt; &lt;span class="pl-v"&gt;Illuminate&lt;/span&gt;\&lt;span class="pl-v"&gt;Database&lt;/span&gt;\&lt;span class="pl-v"&gt;Eloquent&lt;/span&gt;\&lt;span class="pl-v"&gt;Life&lt;/span&gt;;

&lt;span class="pl-k"&gt;class&lt;/span&gt; &lt;span class="pl-v"&gt;ProfileOfLathindu&lt;/span&gt; &lt;span class="pl-k"&gt;extends&lt;/span&gt; &lt;span class="pl-v"&gt;Life&lt;/span&gt;
{
    &lt;span class="pl-k"&gt;use&lt;/span&gt; &lt;span class="pl-v"&gt;HasFactory&lt;/span&gt;;
    &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-c1"&gt;LANGUAGES&lt;/span&gt; = [
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;JAVASCRIPT&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;1&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;PHP&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;2&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;PYTHON&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;3&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;SOLIDITY&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;4&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;DART&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;5&lt;/span&gt;
    ];

    &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-c1"&gt;FRAMEWORKS&lt;/span&gt; = [
         &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;NextJs&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;1&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;LARAVEL&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;2&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;FLUTTER&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;3&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;DJANGO&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;4&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;ANGULAR&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;5&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;IONIC&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;6&lt;/span&gt;
    ];

    &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-c1"&gt;EXPERIENCE&lt;/span&gt; = &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;xxxxxxxxxx of hours from 2017&lt;/span&gt;'&lt;/span&gt;;

    &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-c1"&gt;MORE_EXPERIENCE&lt;/span&gt; = [
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;PAYPAL_API&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;1&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;STRIPE_API&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;2&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/lathindu1/lathindu1" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&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%2F3q4lvrbmuupxu6o6pgx9.png" 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%2F3q4lvrbmuupxu6o6pgx9.png" alt="Screenshot 2021-04-19 at 23.08.02"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>beginners</category>
      <category>php</category>
      <category>codequality</category>
    </item>
    <item>
      <title>Laravel Best Practice [Coding Standards Part 01 ] 🧑‍🦰👩‍🦰</title>
      <dc:creator>Lathindu Pramduitha</dc:creator>
      <pubDate>Sun, 21 Mar 2021 18:29:49 +0000</pubDate>
      <link>https://dev.to/lathindu1/laravel-best-practice-coding-standards-part-01-304l</link>
      <guid>https://dev.to/lathindu1/laravel-best-practice-coding-standards-part-01-304l</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hi guys,&lt;/strong&gt; From this article I'm starting to describe you to about Laravel [PHP] coding Standards with &lt;strong&gt;PSR&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To make this tutorials much easier, I will divide full tutorial as number or articles. So this is first articles of them.&lt;/p&gt;

&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%2Flazc5hhniemwwfjbjbrk.gif" 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%2Flazc5hhniemwwfjbjbrk.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Article 1 : Naming Conventions. ✊
&lt;/h2&gt;

&lt;p&gt;Here we will talk about naming conventions about PHP. Following conventions have accepted by Laravel community.&lt;/p&gt;

&lt;h4&gt;
  
  
  01.01 Controller 👈
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Name should be in &lt;strong&gt;singular&lt;/strong&gt; form.&lt;/li&gt;
&lt;li&gt;Should use &lt;strong&gt;PascalCase&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CustomerController.php&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CustomersController.php&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h4&gt;
  
  
  01.02 Route 👈
&lt;/h4&gt;

&lt;h5&gt;
  
  
  01.02.01 Route Url 👈
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Url should be in &lt;strong&gt;plural&lt;/strong&gt; form.&lt;/li&gt;
&lt;li&gt;Can use &lt;strong&gt;kebab-case&lt;/strong&gt; if there are two words in single part For best Practice.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/customers/25&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;customer/25&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/customers/password-reset&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/customers/password_reset&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/customers/passwordReset&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h5&gt;
  
  
  01.02.02 Route Name 👈
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Should use &lt;strong&gt;snake_case&lt;/strong&gt; with dot notation.&lt;/li&gt;
&lt;li&gt;Better to use same name like in URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-&amp;gt;('customers.view')&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-&amp;gt;('customers-view')&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-&amp;gt;('customers_view')&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-&amp;gt;('customers.password_reset')&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-&amp;gt;('customers.password.reset')&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-&amp;gt;('customers.password-reset')&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-&amp;gt;('customer-password-reset')&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h4&gt;
  
  
  01.03 DataBase Related 👈
&lt;/h4&gt;

&lt;h5&gt;
  
  
  01.03.01 Migration 👈
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Should use name as what you want to do with &lt;strong&gt;snake_case&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;2021_03_19_033513_create_customers_table.php&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2021_03_19_033513_customers.php&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;2021_03_19_033513_add_image_id_to_customers_table.php&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2021_03_19_033513_add_image_id_customers.php&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;2021_03_19_033513_drop_image_id_from_customers_table.php&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2021_03_19_033513_remove_image_id_customers.php&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h5&gt;
  
  
  01.03.02 Table 👈
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Table name must be in &lt;strong&gt;plural&lt;/strong&gt; form.&lt;/li&gt;
&lt;li&gt;Should use &lt;strong&gt;snake_case&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;customers&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;customer&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cart_items&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;cartItems&lt;/code&gt; , &lt;code&gt;CartItems&lt;/code&gt; , &lt;code&gt;Cart_item&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h5&gt;
  
  
  01.03.03 Pivot Table 👈
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Table name must be in &lt;strong&gt;singular&lt;/strong&gt; form.&lt;/li&gt;
&lt;li&gt;Should use &lt;strong&gt;snake_case&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Names should be in &lt;strong&gt;alphabetical&lt;/strong&gt; Order.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;course_student&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;student_courses&lt;/code&gt; , &lt;code&gt;students_courses&lt;/code&gt; ,&lt;code&gt;course_students&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h5&gt;
  
  
  01.03.04 Table Columns 👈
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Should use &lt;strong&gt;snake_case&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Should not use table name with column names.&lt;/li&gt;
&lt;li&gt;Readable name can use for better practice.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;first_name&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;user_first_name&lt;/code&gt; , &lt;code&gt;FirstName&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h5&gt;
  
  
  01.03.05 Foreign key 👈
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Should use &lt;strong&gt;snake_case&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Should use &lt;strong&gt;singular&lt;/strong&gt; table name with &lt;strong&gt;id&lt;/strong&gt; prefix.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;course_id&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;courseId&lt;/code&gt; , &lt;code&gt;id&lt;/code&gt; ,&lt;code&gt;courses_id&lt;/code&gt; ,&lt;code&gt;id_course&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h5&gt;
  
  
  01.03.06 Primary key 👈
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;only use name as &lt;strong&gt;id&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;id&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;custom_name_id&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h5&gt;
  
  
  01.03.07  Model 👈
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Model name must be in &lt;strong&gt;singular&lt;/strong&gt; form.&lt;/li&gt;
&lt;li&gt;Should Use &lt;strong&gt;PascalCase&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Model name must be a singular form or table name.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Customer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Customers&lt;/code&gt;,&lt;code&gt;customer&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h5&gt;
  
  
  01.03.08  Model Single relations [Has One, Belongs To] 👈
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Method name must be in &lt;strong&gt;singular&lt;/strong&gt; form.&lt;/li&gt;
&lt;li&gt;Should Use &lt;strong&gt;camalCase&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;studentCourse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;StudentCourse&lt;/code&gt;,&lt;code&gt;student_course&lt;/code&gt;,&lt;code&gt;studentCourses&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h5&gt;
  
  
  01.03.09  Model all other relations and methods [Has Many,other] 👈
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Method name must be in &lt;strong&gt;plural&lt;/strong&gt; form.&lt;/li&gt;
&lt;li&gt;Should use &lt;strong&gt;camalCase&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cartItems&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;CartItem&lt;/code&gt;,&lt;code&gt;cart_item&lt;/code&gt;,&lt;code&gt;cartItem&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h4&gt;
  
  
  01.04  Functions 👈
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Should Use &lt;strong&gt;snake_case&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;show_route&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;showRoute&lt;/code&gt;,&lt;code&gt;ShowRoute&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h4&gt;
  
  
  01.05  Methods in resources controller 👈
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Should use &lt;strong&gt;camelCase&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Must use singles words related to action&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;store&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;saveCustomer&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;show&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;viewCustomer&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;destroy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;deleteCustomer&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;index&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;allCustomersPage&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h4&gt;
  
  
  01.06  Variables 👈
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Should use &lt;strong&gt;camelCase&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Must use readable words which are describe about value.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$customerMessages&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;$CustomerMessages&lt;/code&gt; ,&lt;code&gt;$customer_messages&lt;/code&gt; , &lt;code&gt;$c_messages&lt;/code&gt; , &lt;code&gt;$c_m&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h4&gt;
  
  
  01.07  Collection 👈
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Must described about the value.&lt;/li&gt;
&lt;li&gt;Must be plural&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$verifiedCustomers = $customer-&amp;gt;verified()-&amp;gt;get()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;$verified&lt;/code&gt; ,&lt;code&gt;$data&lt;/code&gt; , &lt;code&gt;$resp&lt;/code&gt; , &lt;code&gt;$v_c&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h4&gt;
  
  
  01.07  Object 👈
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Must described about the value.&lt;/li&gt;
&lt;li&gt;Must be singular&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$verifiedCustomer = $customer-&amp;gt;verified()-&amp;gt;first()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;$verified&lt;/code&gt; ,&lt;code&gt;$data&lt;/code&gt; , &lt;code&gt;$resp&lt;/code&gt; , &lt;code&gt;$v_c&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h4&gt;
  
  
  01.08  Configs 👈
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Should use &lt;strong&gt;snake_case&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Must described about the value.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;comments_enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;CommentsEnabled&lt;/code&gt; ,&lt;code&gt;comments&lt;/code&gt; , &lt;code&gt;c_enabled&lt;/code&gt; , &lt;code&gt;$ce&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h4&gt;
  
  
  01.09  Traits 👈
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Should be adjective.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Utility&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;UtilityTrait&lt;/code&gt; ,&lt;code&gt;Utilities&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h4&gt;
  
  
  01.10  Interface 👈
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Should be adjective or a noun.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Should Do&lt;/th&gt;
&lt;th&gt;Should't Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Authenticable&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;AuthenticationInterface&lt;/code&gt; ,&lt;code&gt;Authenticate&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So above I have talked about naming convetion in Laravel projects. not only Laravel you guys can use this rules with any other PHP framework. &lt;/p&gt;

&lt;p&gt;With next article I will talk about another main topic of coding standards. &lt;/p&gt;

&lt;p&gt;I hope you find my post useful! Any feedback is greatly appreciated!&lt;/p&gt;

&lt;p&gt;below I mentioned my other articles. you may also read them.&lt;/p&gt;

&lt;h2&gt;
  
  
  You may Find my Fiver Gig Here.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.fiverr.com/s2/0c68721323" rel="noopener noreferrer"&gt;https://www.fiverr.com/s2/0c68721323&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Other Articles
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;MetaMask Integration With Laravel Part1 &lt;a href="https://dev.to/lathindu1/metamask-integration-with-laravel-4mng"&gt;Click Here&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MetaMask Integration With Laravel Part2 &lt;a href="https://dev.to/lathindu1/validate-metamask-transactions-with-etherscan-metamask-integration-with-laravel-part-2-25h6"&gt;Click Here&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here I'm Adding Public GitHub Repository which will store all of my tutorials. you may clone it and see every tutorials what I will publish 🤗.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository&lt;/strong&gt; &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/lathindu1" rel="noopener noreferrer"&gt;
        lathindu1
      &lt;/a&gt; / &lt;a href="https://github.com/lathindu1/tutorials" rel="noopener noreferrer"&gt;
        tutorials
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Tutorials&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Here I will show all the code blocks of my tutorials. you can copy anything or learn anything.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Articles&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/lathindu1/metamask-integration-with-laravel-4mng" rel="nofollow"&gt;How To Connect Metamask With Laravel(Part 01 Connect And Make A Transaction) &lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/lathindu1/validate-metamask-transactions-with-etherscan-metamask-integration-with-laravel-part-2-25h6" rel="nofollow"&gt;How To Connect Metamask With Laravel(Part 02 Validate Transactions) &lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/lathindu1/tutorials" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;&lt;strong&gt;Thank You Very much&lt;/strong&gt;.&lt;br&gt;
--Lathindu Pramuditha--&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Profile&lt;/strong&gt; &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/lathindu1" rel="noopener noreferrer"&gt;
        lathindu1
      &lt;/a&gt; / &lt;a href="https://github.com/lathindu1/lathindu1" rel="noopener noreferrer"&gt;
        lathindu1
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      It's About Lathindu Pramuditha's Account
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt; ආයුබෝවන් (Welcome)🙏🏻, I'm Lathindu Pramuditha Amarasekara! &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/d9b2e380223b298601860a25d75c53ac30edd7633be4964552450e5becd80733/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f31326f75664342304d795a31476f2f67697068792e676966"&gt;&lt;img src="https://camo.githubusercontent.com/d9b2e380223b298601860a25d75c53ac30edd7633be4964552450e5becd80733/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f31326f75664342304d795a31476f2f67697068792e676966" width="50"&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9939f57a40461f1f7d5ee9c81e8f4634eb6a9339f5a3ced15f2ce471bb18b49b/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f4d3967624264396e6244724f5475314d71782f67697068792e676966"&gt;&lt;img src="https://camo.githubusercontent.com/9939f57a40461f1f7d5ee9c81e8f4634eb6a9339f5a3ced15f2ce471bb18b49b/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f4d3967624264396e6244724f5475314d71782f67697068792e676966" width="230"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Founder, CEO AT &lt;a href="https://axcertro.com" rel="nofollow noopener noreferrer"&gt;Axcertro&lt;/a&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/ad38c424479dba43b6ded15fecfde6b53cf9fcd6ff3dc7715d5bcb43f8bbefb8/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f57556c706c634d704f43456d5447427442572f67697068792e676966"&gt;&lt;img src="https://camo.githubusercontent.com/ad38c424479dba43b6ded15fecfde6b53cf9fcd6ff3dc7715d5bcb43f8bbefb8/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f57556c706c634d704f43456d5447427442572f67697068792e676966" width="30"&gt;&lt;/a&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.linkedin.com/in/lathindu-pramuditha/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0df4053d5680797de26b804b272c84108686dcb6d6766d0cee58b67fc191a071/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2d6c617468696e64752d626c75653f7374796c653d666c61742d737175617265266c6f676f3d4c696e6b6564696e266c6f676f436f6c6f723d7768697465266c696e6b3d68747470733a2f2f7777772e6c696e6b6564696e2e636f6d2f696e2f6c617468696e64752d7072616d7564697468612f" alt="Linkedin: lathindu-pramuditha"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/12046fca2e9da79394cbd30157e191d0c4889550a14711737774319b67e980bb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f6c6c6f776572732f6c617468696e6475313f6c6162656c3d466f6c6c6f77267374796c653d736f6369616c"&gt;&lt;img src="https://camo.githubusercontent.com/12046fca2e9da79394cbd30157e191d0c4889550a14711737774319b67e980bb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f6c6c6f776572732f6c617468696e6475313f6c6162656c3d466f6c6c6f77267374796c653d736f6369616c" alt="GitHub followers"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/af3afafbc74a476403a29fbcd54e87fc033ed937227e4cc3d329fa442e7299e3/68747470733a2f2f76697369746f722d62616467652e676c697463682e6d652f62616467653f706167655f69643d6c617468696e6475312e6c617468696e647531"&gt;&lt;img src="https://camo.githubusercontent.com/af3afafbc74a476403a29fbcd54e87fc033ed937227e4cc3d329fa442e7299e3/68747470733a2f2f76697369746f722d62616467652e676c697463682e6d652f62616467653f706167655f69643d6c617468696e6475312e6c617468696e647531" alt=""&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/anmol098/anmol098/workflows/Waka%20Readme/badge.svg"&gt;&lt;img src="https://github.com/anmol098/anmol098/workflows/Waka%20Readme/badge.svg" alt="Waka Readme"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/6f9296a4c8b352a3a335f257ccf592c010c5f578a17a2f8d7ef407efe5dbe6a9/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f56674344417a634b767352364f4d307557672f67697068792e676966"&gt;&lt;img src="https://camo.githubusercontent.com/6f9296a4c8b352a3a335f257ccf592c010c5f578a17a2f8d7ef407efe5dbe6a9/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f56674344417a634b767352364f4d307557672f67697068792e676966" width="50"&gt;&lt;/a&gt; A little more about me...&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-text-html-php notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;namespace&lt;/span&gt; &lt;span class="pl-v"&gt;App&lt;/span&gt;\&lt;span class="pl-v"&gt;Models&lt;/span&gt;
&lt;span class="pl-k"&gt;use&lt;/span&gt; &lt;span class="pl-v"&gt;Illuminate&lt;/span&gt;\&lt;span class="pl-v"&gt;Database&lt;/span&gt;\&lt;span class="pl-v"&gt;Eloquent&lt;/span&gt;\&lt;span class="pl-v"&gt;Factories&lt;/span&gt;\&lt;span class="pl-v"&gt;HasFactory&lt;/span&gt;;
&lt;span class="pl-k"&gt;use&lt;/span&gt; &lt;span class="pl-v"&gt;Illuminate&lt;/span&gt;\&lt;span class="pl-v"&gt;Database&lt;/span&gt;\&lt;span class="pl-v"&gt;Eloquent&lt;/span&gt;\&lt;span class="pl-v"&gt;Life&lt;/span&gt;;

&lt;span class="pl-k"&gt;class&lt;/span&gt; &lt;span class="pl-v"&gt;ProfileOfLathindu&lt;/span&gt; &lt;span class="pl-k"&gt;extends&lt;/span&gt; &lt;span class="pl-v"&gt;Life&lt;/span&gt;
{
    &lt;span class="pl-k"&gt;use&lt;/span&gt; &lt;span class="pl-v"&gt;HasFactory&lt;/span&gt;;
    &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-c1"&gt;LANGUAGES&lt;/span&gt; = [
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;JAVASCRIPT&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;1&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;PHP&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;2&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;PYTHON&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;3&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;SOLIDITY&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;4&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;DART&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;5&lt;/span&gt;
    ];

    &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-c1"&gt;FRAMEWORKS&lt;/span&gt; = [
         &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;NextJs&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;1&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;LARAVEL&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;2&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;FLUTTER&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;3&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;DJANGO&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;4&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;ANGULAR&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;5&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;IONIC&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;6&lt;/span&gt;
    ];

    &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-c1"&gt;EXPERIENCE&lt;/span&gt; = &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;xxxxxxxxxx of hours from 2017&lt;/span&gt;'&lt;/span&gt;;

    &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-c1"&gt;MORE_EXPERIENCE&lt;/span&gt; = [
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;PAYPAL_API&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;1&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;span class="pl-s"&gt;STRIPE_API&lt;/span&gt;'&lt;/span&gt; =&amp;gt; &lt;span class="pl-c1"&gt;2&lt;/span&gt;,
        &lt;span class="pl-s"&gt;'&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/lathindu1/lathindu1" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&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%2Ftto8nw2ig5iadout9zl8.png" 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%2Ftto8nw2ig5iadout9zl8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>beginners</category>
      <category>php</category>
      <category>codequality</category>
    </item>
    <item>
      <title>Metamask Integration With Laravel Part 2[ Validate Transactions With EtherScan ]</title>
      <dc:creator>Lathindu Pramduitha</dc:creator>
      <pubDate>Tue, 16 Feb 2021 20:07:15 +0000</pubDate>
      <link>https://dev.to/lathindu1/validate-metamask-transactions-with-etherscan-metamask-integration-with-laravel-part-2-25h6</link>
      <guid>https://dev.to/lathindu1/validate-metamask-transactions-with-etherscan-metamask-integration-with-laravel-part-2-25h6</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%2F8yqf56mjeji3yh53x6b2.png" 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%2F8yqf56mjeji3yh53x6b2.png" alt="Screenshot 2021-02-17 at 01.24.06"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Welcome to second article of Metamask integration with Laravel.
&lt;/h1&gt;

&lt;p&gt;This document is related to my 1st document. which I explained about Metamask integration with Laravel.&lt;/p&gt;

&lt;p&gt;you may read it here -&amp;gt; &lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/lathindu1" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F576480%2Fe23bfd19-b581-4d8f-92a3-93f1110e2f9e.jpg" alt="lathindu1"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/lathindu1/metamask-integration-with-laravel-4mng" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Metamask Integration With Laravel&lt;/h2&gt;
      &lt;h3&gt;Lathindu Pramduitha ・ Feb 10 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#laravel&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#metamask&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#etherium&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Okay, Let's start second part of the article now.&lt;/p&gt;

&lt;h1&gt;
  
  
  How to validate transactions which are made with Metamask
&lt;/h1&gt;

&lt;p&gt;here I'm using images instead of pasting codes here, it's easy to write document.&lt;br&gt;
and what a wonderful, you can copy or refer full code in repository which I'm mentioned end of the document. 😊&lt;/p&gt;

&lt;p&gt;For the validate transactions very easy and free method is a &lt;a href="https://etherscan.io" rel="noopener noreferrer"&gt;EtherScan&lt;/a&gt; API.&lt;/p&gt;
&lt;h5&gt;
  
  
  First of all, Let's create Etherscan account.
&lt;/h5&gt;

&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%2Fyofgbj5gjsioy1m12yf2.png" 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%2Fyofgbj5gjsioy1m12yf2.png" alt="Screenshot 2021-02-17 at 00.01.47"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  Now we need to create API key
&lt;/h5&gt;
&lt;h6&gt;
  
  
  step 01
&lt;/h6&gt;

&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%2Fc7vb9fuvikucfqqdo2z1.png" 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%2Fc7vb9fuvikucfqqdo2z1.png" alt="Screenshot 2021-02-17 at 00.04.37"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h6&gt;
  
  
  step 02
&lt;/h6&gt;

&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%2F7qcd6q9elf08slgzvt2e.png" 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%2F7qcd6q9elf08slgzvt2e.png" alt="Screenshot 2021-02-17 at 00.06.18"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h6&gt;
  
  
  step 03
&lt;/h6&gt;

&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%2Fpdqxy909ymfdqa597mcx.png" 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%2Fpdqxy909ymfdqa597mcx.png" alt="Screenshot 2021-02-17 at 00.07.27"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you may copy the key and store in somewhere for use in our application.&lt;/p&gt;
&lt;h5&gt;
  
  
  Next we need to create command in Laravel for add to shedular.
&lt;/h5&gt;

&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%2F92x8cdrm9f529o38daw5.png" 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%2F92x8cdrm9f529o38daw5.png" alt="Screenshot 2021-02-16 at 23.21.27"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have created a Command called &lt;strong&gt;MetamaskValidationCommand&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You may open the command file in your editor [ &lt;strong&gt;My favourite is VSCode 😊&lt;/strong&gt; ]&lt;/p&gt;

&lt;p&gt;App-&amp;gt;Console-&amp;gt;Commands-&amp;gt;MetamaskValidationCommand.php&lt;/p&gt;

&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%2F7fpb0gdmpu02s3q1d35f.png" 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%2F7fpb0gdmpu02s3q1d35f.png" alt="Screenshot 2021-02-16 at 23.22.33"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  How To Validate?
&lt;/h1&gt;

&lt;p&gt;For validate a transaction we can use &lt;a href="https://etherscan.io" rel="noopener noreferrer"&gt;EtherScan&lt;/a&gt; 's Free API.&lt;/p&gt;

&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%2Fc93yltlca68jpzvl4uqa.png" 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%2Fc93yltlca68jpzvl4uqa.png" alt="Screenshot 2021-02-17 at 00.22.38"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see number of methods in &lt;a href="https://etherscan.io" rel="noopener noreferrer"&gt;EtherScan&lt;/a&gt; API.&lt;/p&gt;

&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%2F6li68kc9mp55v397dr7n.png" 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%2F6li68kc9mp55v397dr7n.png" alt="Screenshot 2021-02-17 at 00.24.09"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here we use &lt;strong&gt;eth_getTransactionByHash&lt;/strong&gt; method only. &lt;/p&gt;

&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%2F0613xunyrr8ihnf90o5i.png" 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%2F0613xunyrr8ihnf90o5i.png" alt="Screenshot 2021-02-17 at 00.27.53"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;we have to send 2 parameter with this simple get request.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Key =&amp;gt; We already made a one 🎉&lt;/li&gt;
&lt;li&gt;Transaction Id =&amp;gt; It's we already stored in database as &lt;strong&gt;txHash&lt;/strong&gt; 🥳&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;above we created a command called &lt;strong&gt;MetamaskValidationCommand&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  it's time to code.🧑🏻‍💻
&lt;/h2&gt;
&lt;h3&gt;
  
  
  code step 01
&lt;/h3&gt;

&lt;p&gt;Create a function to get transaction information from &lt;a href="https://etherscan.io" rel="noopener noreferrer"&gt;EtherScan&lt;/a&gt;. inside &lt;strong&gt;MetamaskValidationCommand.php&lt;/strong&gt;&lt;/p&gt;

&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%2Fb85w3bt3obkha9wqju1g.png" 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%2Fb85w3bt3obkha9wqju1g.png" alt="Screenshot 2021-02-17 at 00.38.27"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  code step 02
&lt;/h3&gt;

&lt;p&gt;Now we need to get pending transactions from database.&lt;br&gt;
here we need to add some delay to get transactions. because some time Etherium transactions may take more time to be a successful transaction. so here we get transactions which are older than 20 minuets and status = pending from database.&lt;/p&gt;

&lt;p&gt;To call &lt;strong&gt;Transaction Model&lt;/strong&gt; we need call modal inside our constructor.&lt;/p&gt;

&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%2F5iwbjzez2augi69x0jtb.png" 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%2F5iwbjzez2augi69x0jtb.png" alt="Screenshot 2021-02-17 at 00.42.36"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we need to create get function inside &lt;strong&gt;Transaction Model&lt;/strong&gt;.&lt;/p&gt;

&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%2F0bl0uyjt1wotwnbx8v3j.png" 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%2F0bl0uyjt1wotwnbx8v3j.png" alt="Screenshot 2021-02-17 at 00.47.43"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then we can create a function for validate transactions inside &lt;strong&gt;MetamaskValidationCommand.php&lt;/strong&gt;&lt;/p&gt;

&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%2Fxe2fc7kgvtp69ejfk99g.png" 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%2Fxe2fc7kgvtp69ejfk99g.png" alt="Screenshot 2021-02-17 at 00.51.45"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here we first get all the pending [older than 20min] transactions and loop them inside foreach.&lt;/p&gt;

&lt;p&gt;then we get them one by one and send transaction id (txHash) to  &lt;a href="https://etherscan.io" rel="noopener noreferrer"&gt;EtherScan&lt;/a&gt; by using function which we mede above ( &lt;strong&gt;code step 01&lt;/strong&gt; ).&lt;/p&gt;

&lt;p&gt;so our functions are ready to use.&lt;/p&gt;

&lt;p&gt;Now we need to modify our command with custom command params.&lt;/p&gt;

&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%2Fl57l1fwltpzte8uj638q.png" 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%2Fl57l1fwltpzte8uj638q.png" alt="Screenshot 2021-02-17 at 00.58.02"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;finally we need to add our command to kernel.php&lt;/p&gt;

&lt;p&gt;app =&amp;gt; Console =&amp;gt; kernel.php&lt;/p&gt;

&lt;p&gt;here I'm adding schedule to run command every Minuit. You are free to change for any time range --&amp;gt; &lt;a href="https://laravel.com/docs/8.x/scheduling#schedule-frequency-options" rel="noopener noreferrer"&gt;References&lt;/a&gt;.&lt;/p&gt;

&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%2Fezmgcp4ab4o22c1xprwd.png" 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%2Fezmgcp4ab4o22c1xprwd.png" alt="Screenshot 2021-02-17 at 01.02.23"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we are ready to test.&lt;/p&gt;

&lt;p&gt;01 make a transaction like I described in &lt;a href="https://dev.to/lathindu1/metamask-integration-with-laravel-4mng"&gt;Article 01&lt;/a&gt;.&lt;/p&gt;

&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%2F47tky3oerb9kf9vnlwa3.png" 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%2F47tky3oerb9kf9vnlwa3.png" alt="Screenshot 2021-02-17 at 01.16.27"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;02 Wait At least 20 Minuit (You may change the delay value inside TransactionModel.php).&lt;/p&gt;

&lt;p&gt;03 You can see it's marked as success. if its success payment.&lt;/p&gt;

&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%2Fuzgfxznrbz9fwmjtzdth.png" 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%2Fuzgfxznrbz9fwmjtzdth.png" alt="Screenshot 2021-02-17 at 01.19.17"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think your transaction also succeeded without an error. any error please comment below I will help you guys to success.&lt;/p&gt;
&lt;h1&gt;
  
  
  Important
&lt;/h1&gt;

&lt;p&gt;In these both tutorials I have described as very basic methods. we don't write codes like that in production sites. we need to think more about security and durability. I guest you may got help from my article.&lt;/p&gt;
&lt;h2&gt;
  
  
  You may Find my Fiver Gig Here.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.fiverr.com/s2/0c68721323" rel="noopener noreferrer"&gt;https://www.fiverr.com/s2/0c68721323&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;here You may read article one&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/lathindu1" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F576480%2Fe23bfd19-b581-4d8f-92a3-93f1110e2f9e.jpg" alt="lathindu1"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/lathindu1/metamask-integration-with-laravel-4mng" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Metamask Integration With Laravel&lt;/h2&gt;
      &lt;h3&gt;Lathindu Pramduitha ・ Feb 10 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#laravel&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#metamask&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#etherium&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Here I'm Adding Public GitHub Repository which will store all of my tutorials. you may clone it and see every tutorials what I will publish 🤗.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository&lt;/strong&gt; &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/lathindu1" rel="noopener noreferrer"&gt;
        lathindu1
      &lt;/a&gt; / &lt;a href="https://github.com/lathindu1/tutorials" rel="noopener noreferrer"&gt;
        tutorials
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Tutorials&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Here I will show all the code blocks of my tutorials. you can copy anything or learn anything.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Articles&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/lathindu1/metamask-integration-with-laravel-4mng" rel="nofollow"&gt;How To Connect Metamask With Laravel(Part 01 Connect And Make A Transaction) &lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/lathindu1/validate-metamask-transactions-with-etherscan-metamask-integration-with-laravel-part-2-25h6" rel="nofollow"&gt;How To Connect Metamask With Laravel(Part 02 Validate Transactions) &lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/lathindu1/tutorials" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Thank You Very much.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lathindu Pramuditha.&lt;/li&gt;
&lt;li&gt;GitHub Profile -&amp;gt;  &lt;a href="https://github.com/lathindu1" rel="noopener noreferrer"&gt;https://github.com/lathindu1&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>metamask</category>
      <category>etherscan</category>
    </item>
    <item>
      <title>Metamask Integration With Laravel</title>
      <dc:creator>Lathindu Pramduitha</dc:creator>
      <pubDate>Wed, 10 Feb 2021 18:48:53 +0000</pubDate>
      <link>https://dev.to/lathindu1/metamask-integration-with-laravel-4mng</link>
      <guid>https://dev.to/lathindu1/metamask-integration-with-laravel-4mng</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%2Fi%2Fe5pshe8y1z1t59xsarnm.png" 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%2Fi%2Fe5pshe8y1z1t59xsarnm.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  What Is MetaMask ?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;MetaMask&lt;/strong&gt; is a cryptocurrency wallet which can be install in several browsers such as Chrome, FireFox and Brave Browser [ Unfortunately you can’t install in Safari 🤪 ]. That mean you can use Metamask as a bridge between ETH blockchain and browser.&lt;/p&gt;

&lt;p&gt;And what is the amazing one, You can store &lt;strong&gt;ERCi20&lt;/strong&gt; token also in Metamask like ETH.&lt;br&gt;
So you can build custom token and use it inside your platform.&lt;/p&gt;
&lt;h1&gt;
  
  
  So How To Integrate ?
&lt;/h1&gt;

&lt;p&gt;Let’s go with Metamask integration process.&lt;/p&gt;

&lt;p&gt;Here I’m use simple &lt;strong&gt;Laravel&lt;/strong&gt; application to show entire integration process.&lt;br&gt;
And I'm using screen shots of my code to make this article much easier. &lt;/p&gt;

&lt;p&gt;🪄 Don't Worry End Of the Document I will mention the GitHub repository and also Codepen link. then you can get entire code 😊. &lt;/p&gt;

&lt;p&gt;So let’s divide process as a two sections.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How To Integrate Metamask.&lt;/li&gt;
&lt;li&gt;How To Validate Transactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this article I will describe the step 01.&lt;/p&gt;
&lt;h2&gt;
  
  
  01 How To Integrate Metamask
&lt;/h2&gt;

&lt;p&gt;Here I’m using Chrome as my browser.&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 01
&lt;/h4&gt;

&lt;p&gt;Let’s create simple input with button for enter the amount.&lt;/p&gt;

&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%2Fi%2Fycy4i313ma1wzvtsegr4.png" 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%2Fi%2Fycy4i313ma1wzvtsegr4.png" alt="Screenshot 2021-02-10 at 21.56.22"&gt;&lt;/a&gt;&lt;/p&gt;

&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%2Fi%2Fo1zley6ml6q3c126ilsj.png" 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%2Fi%2Fo1zley6ml6q3c126ilsj.png" alt="Screenshot 2021-02-10 at 22.24.02"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 02
&lt;/h4&gt;

&lt;p&gt;Now we need to create javascript function to submit payment. Here I add function with onClick event of the button.&lt;/p&gt;

&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%2Fi%2Fwcj3s2lox9kqu07gdeny.png" 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%2Fi%2Fwcj3s2lox9kqu07gdeny.png" alt="Screenshot 2021-02-10 at 21.57.59"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 03
&lt;/h4&gt;

&lt;p&gt;Now we need to create javascript function to initialise, metamask and run payment.&lt;/p&gt;
&lt;h6&gt;
  
  
  Before that let's simplify the process which we need to do here.
&lt;/h6&gt;
&lt;h5&gt;
  
  
  1 Web3 Browser Detection
&lt;/h5&gt;

&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%2Fi%2Fh6pvg4j49m81ivfkvc48.png" 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%2Fi%2Fh6pvg4j49m81ivfkvc48.png" alt="Screenshot 2021-02-10 at 22.03.20"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  2 Connect to MetaMask Account
&lt;/h5&gt;

&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%2Fi%2F83agrmhtun6k8wf18qjq.png" 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%2Fi%2F83agrmhtun6k8wf18qjq.png" alt="Screenshot 2021-02-10 at 22.10.49"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  3 Do A Payment
&lt;/h5&gt;

&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%2Fi%2Fdybyjreno4ye15qo2be6.png" 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%2Fi%2Fdybyjreno4ye15qo2be6.png" alt="Screenshot 2021-02-10 at 22.12.29"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so here I'm adding some major validations to make process more creative. and also we must use javascript &lt;strong&gt;await&lt;/strong&gt; expression because of &lt;strong&gt;async&lt;/strong&gt; process.&lt;/p&gt;
&lt;h5&gt;
  
  
  1 Detect Web3
&lt;/h5&gt;

&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%2Fi%2Fqla4tgn45t8qcmrn3y0v.png" 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%2Fi%2Fqla4tgn45t8qcmrn3y0v.png" alt="Screenshot 2021-02-10 at 22.16.04"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  2 Connect With Metamask Account
&lt;/h5&gt;

&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%2Fi%2Fqasktjxiv52y9nc3lmjn.png" 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%2Fi%2Fqasktjxiv52y9nc3lmjn.png" alt="Screenshot 2021-02-10 at 22.16.55"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  3 Do Payment
&lt;/h5&gt;

&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%2Fi%2F11z804seusxmdxm0k8rg.png" 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%2Fi%2F11z804seusxmdxm0k8rg.png" alt="Screenshot 2021-02-10 at 22.19.13"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;here you can see I mentioned a place where you should enter the payments receive address. for testings you can simply create two accounts in metamask and use one account for receive payments and second account for make payments.&lt;/p&gt;

&lt;p&gt;after this step we can do a payments with &lt;strong&gt;Metamask&lt;/strong&gt; , without an issue.&lt;/p&gt;

&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%2Fi%2Fit1imdm7z1p31ruwfp1h.png" 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%2Fi%2Fit1imdm7z1p31ruwfp1h.png" alt="Screenshot 2021-02-10 at 22.27.27"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then we need to store transaction in the database.&lt;/p&gt;

&lt;p&gt;for that I will use simple Ajax Request for send data  to TransactionController.&lt;/p&gt;

&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%2Fi%2Fk5lwuvodi2mlulp3e264.png" 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%2Fi%2Fk5lwuvodi2mlulp3e264.png" alt="Screenshot 2021-02-10 at 22.30.06"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;In TransactionsController&lt;br&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%2Fi%2Fz1wnycwscm05zvyjf7r8.png" 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%2Fi%2Fz1wnycwscm05zvyjf7r8.png" alt="Screenshot 2021-02-10 at 22.33.09"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we need to show all the transactions to user.&lt;/p&gt;

&lt;p&gt;first get transactions from the transactions table.&lt;/p&gt;

&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%2Fi%2Frwne8w1pxmt8c6oimjf6.png" 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%2Fi%2Frwne8w1pxmt8c6oimjf6.png" alt="Screenshot 2021-02-10 at 22.35.53"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we can show all the transaction in simple bootstrap table.&lt;/p&gt;

&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%2Fi%2Feyuyrid8nsmdteljslyf.png" 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%2Fi%2Feyuyrid8nsmdteljslyf.png" alt="Screenshot 2021-02-10 at 22.36.51"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;finally transactions page will looks like this.&lt;/p&gt;

&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%2Fi%2Fh1xry3murk9b4w8tv9l4.png" 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%2Fi%2Fh1xry3murk9b4w8tv9l4.png" alt="Screenshot 2021-02-10 at 22.38.03"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Okay Grate 🎉 Now all the steps are completed.&lt;/p&gt;

&lt;p&gt;** When you try to make a transaction. In Very first attempt &lt;strong&gt;Metamask&lt;/strong&gt; will ask to connect your one of account. So here you must connect your account with your website [This process need only first attempt]. Then you can send payments. but if you have already connected account you can pay directly**&lt;/p&gt;

&lt;p&gt;let's try to make a transaction.&lt;/p&gt;

&lt;p&gt;Enter The amount&lt;br&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%2Fi%2Fr1n4gbmrc56vkyesswqv.png" 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%2Fi%2Fr1n4gbmrc56vkyesswqv.png" alt="Screenshot 2021-02-10 at 22.42.57"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click Pay Now Button&lt;br&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%2Fi%2F1py1c68fjl3dj0p8yk90.png" 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%2Fi%2F1py1c68fjl3dj0p8yk90.png" alt="Screenshot 2021-02-10 at 22.43.12"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next And Connect With Account&lt;br&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%2Fi%2F9ojt5ezhy2bib53ibe35.png" 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%2Fi%2F9ojt5ezhy2bib53ibe35.png" alt="Screenshot 2021-02-10 at 22.43.20"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do A Payment&lt;br&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%2Fi%2F0jwl8v0bw68p174wth2t.png" 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%2Fi%2F0jwl8v0bw68p174wth2t.png" alt="Screenshot 2021-02-10 at 22.43.27"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;success Payment&lt;br&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%2Fi%2F77tkmq9jed44tyjoskhr.png" 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%2Fi%2F77tkmq9jed44tyjoskhr.png" alt="Screenshot 2021-02-10 at 22.43.42"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then Verify Our Payment With Etherscan.&lt;/p&gt;

&lt;p&gt;Simply copy transaction id and put in Etherscan transaction id box.&lt;/p&gt;

&lt;p&gt;or you can use Link Like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ropsten.etherscan.io/tx/%7BYour_Transaction_Id%7D" rel="noopener noreferrer"&gt;https://ropsten.etherscan.io/tx/{Your_Transaction_Id}&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here &lt;strong&gt;ropsten&lt;/strong&gt; is our network.&lt;/p&gt;

&lt;p&gt;for the testings we can use &lt;strong&gt;ropsten&lt;/strong&gt; network. and make sure when you go live you must use &lt;strong&gt;Mainnet&lt;/strong&gt; as your network.&lt;/p&gt;

&lt;p&gt;Test Transaction Example in Etherscan.&lt;/p&gt;

&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%2Fi%2Fhpnqifh67yu9xq4wj6k1.png" 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%2Fi%2Fhpnqifh67yu9xq4wj6k1.png" alt="Screenshot 2021-02-10 at 22.53.16"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Next Article I will guid You To Make Validator to validate transactions.&lt;/p&gt;

&lt;p&gt;I think if you read carefully you may learn something new.&lt;/p&gt;

&lt;p&gt;Here I'm Adding Public GitHub Repository which will store all of my tutorials. you may clone it and see every tutorials what I will publish 🤗.&lt;/p&gt;
&lt;h2&gt;
  
  
  You may Find my Fiver Gig Here.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.fiverr.com/s2/0c68721323" rel="noopener noreferrer"&gt;https://www.fiverr.com/s2/0c68721323&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You may read second Article Here  &lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/lathindu1" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F576480%2Fe23bfd19-b581-4d8f-92a3-93f1110e2f9e.jpg" alt="lathindu1"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/lathindu1/validate-metamask-transactions-with-etherscan-metamask-integration-with-laravel-part-2-25h6" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Metamask Integration With Laravel Part 2[ Validate Transactions With EtherScan ]&lt;/h2&gt;
      &lt;h3&gt;Lathindu Pramduitha ・ Feb 16 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#laravel&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#php&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#metamask&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#etherscan&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;GitHub Repository&lt;/strong&gt; &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/lathindu1" rel="noopener noreferrer"&gt;
        lathindu1
      &lt;/a&gt; / &lt;a href="https://github.com/lathindu1/tutorials" rel="noopener noreferrer"&gt;
        tutorials
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Tutorials&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Here I will show all the code blocks of my tutorials. you can copy anything or learn anything.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Articles&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/lathindu1/metamask-integration-with-laravel-4mng" rel="nofollow"&gt;How To Connect Metamask With Laravel(Part 01 Connect And Make A Transaction) &lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/lathindu1/validate-metamask-transactions-with-etherscan-metamask-integration-with-laravel-part-2-25h6" rel="nofollow"&gt;How To Connect Metamask With Laravel(Part 02 Validate Transactions) &lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/lathindu1/tutorials" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;&lt;strong&gt;CodePen&lt;/strong&gt; &lt;iframe height="600" src="https://codepen.io/lathindu/embed/bGBwOWd?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Thank You Very much.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lathindu Pramuditha.&lt;/li&gt;
&lt;li&gt;GitHub Profile -&amp;gt;  &lt;a href="https://github.com/lathindu1" rel="noopener noreferrer"&gt;https://github.com/lathindu1&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>laravel</category>
      <category>metamask</category>
      <category>etherium</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
