Laravel JS Библиотека валидаторов не работает, если существует несколько моделей - PullRequest
1 голос
/ 23 апреля 2020

В моем проекте laravel у меня есть несколько таблиц, которые содержат идентификатор электронной почты (пример: таблица пользователей и таблица агентств), и я использую валидатор JS для проверки формы. Проблема заключается в том, что, когда я пытаюсь заполнить форму агентств, данные, если я использую почтовый идентификатор, которого нет в таблице агентств, но уже есть в таблице пользователей, вызывает ошибку email is already taken. Но этот идентификатор электронной почты присутствует только в таблице пользователей, а не в таблице агентства.

Ниже приведены мои коды для проверки и хранения () в контроллере агентства

protected $addValidationRules = [
                                        'name' => 'required|max:255',
                                        'username' =>'required|max:255',
                                        'password' => 'required|min:6',
                                        'city' => 'required|max:255',
                                        'state' => 'required|max:255',
                                        'zip_code' => 'required|max:255',
                                        'email' => 'required|email|max:255|unique:users',

                                    ]; 

Ниже приведен мой код для хранения данные в таблице агентства

public function store(Request $request)
    {
        $postdata = $request->all();
        // echo "<pre>";print_r($postdata);exit;


        $validation = Validator::make($request->all(), $this->addValidationRules);
        if ($validation->fails()) {

            return redirect()->back()->withErrors($validation->errors())->withInput();
        }else{

            $name = isset($postdata['name']) ? $postdata['name'] : '';
            $username = isset($postdata['username']) ? $postdata['username'] : '';
            $password = isset($postdata['password']) ? $postdata['password'] : '';
            $city = isset($postdata['city']) ? $postdata['city'] : '';
            $state = isset($postdata['state']) ? $postdata['state'] : '';
            $zip = isset($postdata['zip_code']) ? $postdata['zip_code'] : '';
            $email = isset($postdata['email']) ? $postdata['email'] : '';
            $created_at = Carbon::now();

            try {
                $agency = Agencie::create([
                    'agency_name' => $name,
                    'agency_user_name' => $username,
                    // 'payment_type' => $payment_type,
                    'password' => bcrypt($password),
                    'agency_city' => $city,
                    'agency_state' => $state,
                    'agency_zip' => $zip,
                    'email' => $email,
                    'agency_status' => 'ACTIVE',
                    'created_at' => $created_at
                ]);
            // $agency->notify(new AgencyRegisteredNotification($agency));
            }catch (\Exception $e){
                return $e->getMessage();
            }

            if($agency != ''){
                Session::flash('message', 'Agency added Successfully');
                Session::flash('msgclass', 'alert-success');

                return Redirect::to('admin/agencies');

            }else{
                Session::flash('message', 'Error while adding Agency');
                Session::flash('msgclass', 'alert-danger');
                return Redirect::to('admin/agencies');
            }
        }
    }

Но, пожалуйста, не то, чтобы я хотел взять данные из модели пользователя также на этой странице, поэтому я также использовал UserModel, следующий код:

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

use App\Agencie;
use App\User;
use DB;
use JsValidator;
use Validator;
use Illuminate\Support\Str;
use Session;
use Redirect;
use Carbon\Carbon;
use App\Libraries\GlobalHelpers;
use App\Libraries\ImageHelpers;
use Auth;
use Response;
use App\Notifications\AgencyRegisteredNotification;

Если в чем проблема, как я могу это проверить?

1 Ответ

1 голос
/ 23 апреля 2020

Если эта часть проверки, если для агентств

protected $addValidationRules = [
   'name' => 'required|max:255',
   'username' =>'required|max:255',
   'password' => 'required|min:6',
   'city' => 'required|max:255',
   'state' => 'required|max:255',
   'zip_code' => 'required|max:255',
   'email' => 'required|email|max:255|unique:users',

];

Вы должны изменить эту часть кода

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

на

'email' => 'required|email|max:255|unique:agencies',
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...