Исправление уникального правила проверки Laravel 6.x - PullRequest
0 голосов
/ 08 апреля 2020

Я создаю Laravel Auth Panel System (администратор, студент, персонал) для таблицы пользователей. Затем снова Laravel Подать заявку на вакансию в таблицу вакансий. и затем снова Laravel Auth Подать заявку на допуск к таблице допущений. если эта задача выполнена, то нам нужно отловить все записи из таблицы (поступления и вакансии) в таблицу пользователей. Исправление Laravel 6.x Уникального правила проверки. Ошибка выдачи отображается на шаблонной форме блэйда Cni c уже занято.

Таблица вакансий

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'];
}

VacancyRegisterController

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

VacancyController

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');
});

...