mercredi 10 novembre 2021

Unique Validation in Laravel 5.4 not working as intended for where() statement

In this table, there are 3 main parameters:

"is_active" (BOOLEAN)
"position" (INT)
"id" 

This is the Unique Rule

'position' => [
'required_if:is_active,true|integer|min:1',
Rule::unique('tablename')->where(function($query) { $query->where('is_active', '=', 'true')->where('id', '!=', $this->id); }),
],

This rule is supposed to make sure that the position parameter to be unique among the data that have is_active set to true. Current issue is that this rule has been ignored, and I'm able to save the update/edit function even though by right is should have failed this validation.

id=1, position=1, is_active=true

id=2, position=2, is_active=true

when I change the position from 2 to 1, as shown above, it should show an error message, instead of being successful. but it isn't the case.

EDIT: $this attribute

ParameterBag {#1862
  #parameters: array:13 [
    "is_active" => "1"
    "order" => "2"
  ]
}

Note: This is in Laravel 5.4 and please do not suggest me to upgrade to Laravel 8, etc.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire