Laravel Validation - Check Active Duplicate Emails










0















The table structure:



users: id - email - active


I want check duplicated email only when active is 0.



For all emails,I do this:



'email' => 'required|unique:users|email',


Is it possible to define a condition in the validation?










share|improve this question
























  • I bet my google search took less time that you took to ask the question :)

    – RiggsFolly
    Nov 15 '18 at 16:39






  • 1





    laracasts.com/discuss/channels/laravel/…

    – RiggsFolly
    Nov 15 '18 at 16:39











  • @RiggsFolly I wrote the answer of that page here myself. I want more. please read the question.

    – Areza
    Nov 15 '18 at 16:40











  • You can put validation rules into array and add them dynamically into validation method. Add condition like if user which you are trying to edit is active then push that email => 'required|unique:users|email' rule.

    – alexey-novikov
    Nov 15 '18 at 16:40















0















The table structure:



users: id - email - active


I want check duplicated email only when active is 0.



For all emails,I do this:



'email' => 'required|unique:users|email',


Is it possible to define a condition in the validation?










share|improve this question
























  • I bet my google search took less time that you took to ask the question :)

    – RiggsFolly
    Nov 15 '18 at 16:39






  • 1





    laracasts.com/discuss/channels/laravel/…

    – RiggsFolly
    Nov 15 '18 at 16:39











  • @RiggsFolly I wrote the answer of that page here myself. I want more. please read the question.

    – Areza
    Nov 15 '18 at 16:40











  • You can put validation rules into array and add them dynamically into validation method. Add condition like if user which you are trying to edit is active then push that email => 'required|unique:users|email' rule.

    – alexey-novikov
    Nov 15 '18 at 16:40













0












0








0








The table structure:



users: id - email - active


I want check duplicated email only when active is 0.



For all emails,I do this:



'email' => 'required|unique:users|email',


Is it possible to define a condition in the validation?










share|improve this question
















The table structure:



users: id - email - active


I want check duplicated email only when active is 0.



For all emails,I do this:



'email' => 'required|unique:users|email',


Is it possible to define a condition in the validation?







php laravel laravel-5 laravel-validation






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 15 '18 at 16:38







Areza

















asked Nov 15 '18 at 16:36









ArezaAreza

1066




1066












  • I bet my google search took less time that you took to ask the question :)

    – RiggsFolly
    Nov 15 '18 at 16:39






  • 1





    laracasts.com/discuss/channels/laravel/…

    – RiggsFolly
    Nov 15 '18 at 16:39











  • @RiggsFolly I wrote the answer of that page here myself. I want more. please read the question.

    – Areza
    Nov 15 '18 at 16:40











  • You can put validation rules into array and add them dynamically into validation method. Add condition like if user which you are trying to edit is active then push that email => 'required|unique:users|email' rule.

    – alexey-novikov
    Nov 15 '18 at 16:40

















  • I bet my google search took less time that you took to ask the question :)

    – RiggsFolly
    Nov 15 '18 at 16:39






  • 1





    laracasts.com/discuss/channels/laravel/…

    – RiggsFolly
    Nov 15 '18 at 16:39











  • @RiggsFolly I wrote the answer of that page here myself. I want more. please read the question.

    – Areza
    Nov 15 '18 at 16:40











  • You can put validation rules into array and add them dynamically into validation method. Add condition like if user which you are trying to edit is active then push that email => 'required|unique:users|email' rule.

    – alexey-novikov
    Nov 15 '18 at 16:40
















I bet my google search took less time that you took to ask the question :)

– RiggsFolly
Nov 15 '18 at 16:39





I bet my google search took less time that you took to ask the question :)

– RiggsFolly
Nov 15 '18 at 16:39




1




1





laracasts.com/discuss/channels/laravel/…

– RiggsFolly
Nov 15 '18 at 16:39





laracasts.com/discuss/channels/laravel/…

– RiggsFolly
Nov 15 '18 at 16:39













@RiggsFolly I wrote the answer of that page here myself. I want more. please read the question.

– Areza
Nov 15 '18 at 16:40





@RiggsFolly I wrote the answer of that page here myself. I want more. please read the question.

– Areza
Nov 15 '18 at 16:40













You can put validation rules into array and add them dynamically into validation method. Add condition like if user which you are trying to edit is active then push that email => 'required|unique:users|email' rule.

– alexey-novikov
Nov 15 '18 at 16:40





You can put validation rules into array and add them dynamically into validation method. Add condition like if user which you are trying to edit is active then push that email => 'required|unique:users|email' rule.

– alexey-novikov
Nov 15 '18 at 16:40












2 Answers
2






active

oldest

votes


















3














What about using validator closure ?



public function store(Request $request)

$this->validate($request, [
'email' => [
'required',
'email',
function ($attribute, $value, $fail)
if (Users::whereEmail($value)->whereActive(0)->count() > 0)
$fail($attribute.' is already used.');

,
]);

}





share|improve this answer






























    0














    The unique rule has the following parameters:




    table[,column[,ignore value[,ignore column[,where column,where value]...]]]




    So something like this should work:



    'email' => 'required|unique:users,email,null,null,active,0|email',


    I set the ignore column and value to null as nothing was getting ignored in your original question. However, if you're doing this validation on update as well as create, you may want to account for that.






    share|improve this answer
























      Your Answer






      StackExchange.ifUsing("editor", function ()
      StackExchange.using("externalEditor", function ()
      StackExchange.using("snippets", function ()
      StackExchange.snippets.init();
      );
      );
      , "code-snippets");

      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "1"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );













      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53324010%2flaravel-validation-check-active-duplicate-emails%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      3














      What about using validator closure ?



      public function store(Request $request)

      $this->validate($request, [
      'email' => [
      'required',
      'email',
      function ($attribute, $value, $fail)
      if (Users::whereEmail($value)->whereActive(0)->count() > 0)
      $fail($attribute.' is already used.');

      ,
      ]);

      }





      share|improve this answer



























        3














        What about using validator closure ?



        public function store(Request $request)

        $this->validate($request, [
        'email' => [
        'required',
        'email',
        function ($attribute, $value, $fail)
        if (Users::whereEmail($value)->whereActive(0)->count() > 0)
        $fail($attribute.' is already used.');

        ,
        ]);

        }





        share|improve this answer

























          3












          3








          3







          What about using validator closure ?



          public function store(Request $request)

          $this->validate($request, [
          'email' => [
          'required',
          'email',
          function ($attribute, $value, $fail)
          if (Users::whereEmail($value)->whereActive(0)->count() > 0)
          $fail($attribute.' is already used.');

          ,
          ]);

          }





          share|improve this answer













          What about using validator closure ?



          public function store(Request $request)

          $this->validate($request, [
          'email' => [
          'required',
          'email',
          function ($attribute, $value, $fail)
          if (Users::whereEmail($value)->whereActive(0)->count() > 0)
          $fail($attribute.' is already used.');

          ,
          ]);

          }






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 15 '18 at 17:04









          simonecoscisimonecosci

          82658




          82658























              0














              The unique rule has the following parameters:




              table[,column[,ignore value[,ignore column[,where column,where value]...]]]




              So something like this should work:



              'email' => 'required|unique:users,email,null,null,active,0|email',


              I set the ignore column and value to null as nothing was getting ignored in your original question. However, if you're doing this validation on update as well as create, you may want to account for that.






              share|improve this answer





























                0














                The unique rule has the following parameters:




                table[,column[,ignore value[,ignore column[,where column,where value]...]]]




                So something like this should work:



                'email' => 'required|unique:users,email,null,null,active,0|email',


                I set the ignore column and value to null as nothing was getting ignored in your original question. However, if you're doing this validation on update as well as create, you may want to account for that.






                share|improve this answer



























                  0












                  0








                  0







                  The unique rule has the following parameters:




                  table[,column[,ignore value[,ignore column[,where column,where value]...]]]




                  So something like this should work:



                  'email' => 'required|unique:users,email,null,null,active,0|email',


                  I set the ignore column and value to null as nothing was getting ignored in your original question. However, if you're doing this validation on update as well as create, you may want to account for that.






                  share|improve this answer















                  The unique rule has the following parameters:




                  table[,column[,ignore value[,ignore column[,where column,where value]...]]]




                  So something like this should work:



                  'email' => 'required|unique:users,email,null,null,active,0|email',


                  I set the ignore column and value to null as nothing was getting ignored in your original question. However, if you're doing this validation on update as well as create, you may want to account for that.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Nov 15 '18 at 17:27

























                  answered Nov 15 '18 at 17:05









                  miken32miken32

                  24k94973




                  24k94973



























                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53324010%2flaravel-validation-check-active-duplicate-emails%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Top Tejano songwriter Luis Silva dead of heart attack at 64

                      ReactJS Fetched API data displays live - need Data displayed static

                      政党