首页 > 解决方案 > 修复唯一验证规则 Laravel 6.x

问题描述

我正在为 users 表创建 Laravel Auth Panel System(admin, student, staff)。然后再次 Laravel Auth Apply for Vacancy 到 vacancys 表。然后再次 Laravel Auth Apply for Admission to the admissions 表。如果此任务完成,那么我们需要将(录取和空缺)表中的所有记录捕获到用户表中。修复 Laravel 6.x 唯一验证规则。Giving Error 显示在刀片​​模板表单上 cnic 已被占用。

职位空缺表

public function up()
    {
        Schema::create('vacancies', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('cnic');
            $table->string('user_role')->default('staff');
            $table->string('password');
            $table->timestamps();
        });
    }

空缺模型

class Vacancy extends Authenticatable
{
    use Notifiable;
    protected $guard='vacancy';
    protected $fillable = ['cnic','password',];
    protected $table = 'vacancies';
    protected $dates = ['created_at', 'updated_at'];
}

空缺登记控制器

protected function validator(array $data)
    {
        return Validator::make($data, [
            'cnic' => ['bail','required', 'string', 'unique:vacancies','regex:[\d{13}]'],
            'password' => ['bail','required', 'string',],
        ]);
    }

空缺控制器

class VacancyController extends Controller
{
    use AuthenticatesUsers;
    protected function guard()
    {
        return Auth::guard('vacancy');
    }

    public function username()
    {
        return 'cnic';
    }

    public function login(Request $request){

        if (DB::table('vacancies')->where('cnic',$request->has('cnic'))->exists()){
            $this->validate($request,[
                'cnic' => ['bail','required','unique:vacancies', 'string','regex:[\d{13}]'],
                'password' => ['bail','required', 'string',],
            ]);
            if (Auth::guard('vacancy')->attempt(['cnic' => $request->has('cnic'),'password' => $request->has('password')])){

                return '/vacancy';
            }
        }
        elseif (DB::table('vacancies')->where('cnic',$request->has('cnic'))->doesntExist()){

            $data= new VacancyRegisterController();
            return $data->register($request);
        }
        else{

            return redirect('/');
        }
    }
}

网页.php

Route::post('/login-vacancy','Auth\VacancyController@login')->name('v-login');
Route::post('/logout-vacancy','Auth\VacancyController@logout')->name('v-logout');


Route::middleware('auth')->group(function (){
    Route::get('/vacancy',function (){
        return view('vacancy.vacancy');
    })->name('staff-vacancy');
});

标签: laravellaravel-6

解决方案


推荐阅读