0
votes

I try to set a unique validation for two columns one is BadgeCode and another is Tazkera but I am getting the below error but for the rest columns the validation works perfectly:

Error:

Method Illuminate\Validation\Validator::validateTazker does not exist.
Method Illuminate\Validation\Validator::validateBadgeCode does not exist.

Migration code is for the employees table:

public function up()
{
    Schema::create('employees', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('BadgeCode')->unique();
        $table->string('BadgeType');
        $table->integer('company_id');
        $table->integer('nationality_id');
        $table->string('lastname');
        $table->string('firstname');
        $table->string('tazker')->unique();
        $table->string('telphonenumber');
        $table->string('position');
        $table->string('supervisorname');
        $table->string('supervisornumber');
        $table->string('issuedate');
        $table->string('expiredate');
        $table->string('serialnumber')->default('000000');
        // $table->boolean('checkout')->default(0);
        $table->softDeletes();
        $table->timestamps();
    });
}

my controller code is:

 public function store(Request $request)
 {
    $this->validate($request,[           
            'BadgeCode'=>'required|string|BadgeCode|unique:employees',  
            'BadgeType'=>'required', 
            'company_id'=>'required',
            'nationality_id'=>'required',
            'lastname'=>'required',
            'firstname'=>'required',
            'tazker'=>'required|string|tazker|unique:employees',
            'telphonenumber'=>'required',
            'position'=>'required',
            'supervisorname'=>'required',
            'supervisornumber'=>'required',
            'issuedate'=>'required',
            'expiredate'=>'required',
            'serialnumber'=>'required'
   
    ]);
    return Employee::create([
        'BadgeCode'=>$request['BadgeCode'],
        'BadgeType'=>$request['BadgeType'], 
        'company_id'=>$request['company_id'],  
        'nationality_id'=>$request['nationality_id'],         
        'lastname'=>$request['lastname'],
        'firstname'=>$request['firstname'],
        'telphonenumber'=>$request['telphonenumber'],
        'position'=>$request['position'],
        'supervisorname'=>$request['supervisorname'],
        'supervisornumber'=>$request['supervisornumber'],
        'issuedate'=>$request['issuedate'],
        'tazker'=>$request['tazker'],
        'expiredate'=>$request['expiredate'],
        'serialnumber'=>$request['serialnumber'],
    ]);
 }

HTML Code in Employees.vue is

<div class="form-group">
   <input v-model="form.BadgeCode" placeholder="Enter BadgeCode" type="text" name="BadgeCode" class="form-control" :class="{ 'is-invalid': form.errors.has('BadgeCode') }" />
   <has-error :form="form" field="BadgeCode"></has-error>
</div>
<div class="form-group">
   <input v-model="form.tazker" placeholder="Enter tazker" type="text" name="tazker" class="form-control" :class="{ 'is-invalid': form.errors.has('tazker') }" />
   <has-error :form="form" field="tazker"></has-error>
</div>
2
Neither of those are rules. This is why you get the error. Remove them, they're erroneous. It should be unique:employees,BadgeCode and unique:employees,tazker - Ohgodwhy

2 Answers

1
votes

Remove BadgeCode validation attribute

         $this->validate($request,[           
            'BadgeCode'=>'required|string|unique:employees',  
            'BadgeType'=>'required', 
              'company_id'=>'required',
            'nationality_id'=>'required',
            'lastname'=>'required',
            'firstname'=>'required',
            'tazker'=>'required|string|tazker|unique:employees',
            'telphonenumber'=>'required',
            'position'=>'required',
            'supervisorname'=>'required',
            'supervisornumber'=>'required',
            'issuedate'=>'required',
            'expiredate'=>'required',
            'serialnumber'=>'required'


        ]);

0
votes

I solved it as Ohgodwhy said in the comments

$this->validate($request,[           
            // 'BadgeCode'=>'required|string',  
           'BadgeCode'=>'required|unique:employees,BadgeCode',
            'BadgeType'=>'required', 
              'company_id'=>'required',
            'nationality_id'=>'required',
            'lastname'=>'required',
            'firstname'=>'required',
            'tazker'=>'required|string|unique:employees,tazker',
            'telphonenumber'=>'required',
            'position'=>'required',
            'supervisorname'=>'required',
            'supervisornumber'=>'required',
            'issuedate'=>'required',
            'expiredate'=>'required',
            'serialnumber'=>'required'

        //   $table->integer('nationality_id')->unsigned();

        ]);