질문을 삭제하지 말아주세요.!
 
1
0
-1

현재 하나의 로컬 서버에 두개의 데이터베이스를 connection 해서 데이터들을 쓰고있습니다


그런데 생각하다가 하나의 데이터베이스 서버가 아니라 완전히 독립된 데이터베이스 서버 두개를 각각 사용한다고 하면


그대로 connection 서버주소를 넣어서 사용하면 되지만 


validation 의 unique 같은걸 이용할때는 어떻게 어디 서버에 어느 데이터베이스에 테이블에서 검사하라는걸 알려줄수 있을까요 ?? 


valdation에 설정해주는 헬퍼함수가 있을까요 ?? 헬퍼함수로좀 알려주시면 안될까요 ㅠㅠ ?

    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      구글링 하니 나오네요

      https://stackoverflow.com/questions/27342108/how-to-change-database-in-validator-in-laravel


          $verifier = App::make('validation.presence');
          $verifier->setConnection('server_auth');
      
          // validate the info, create rules for the inputs
          $rules = User::$rules = array(
              'username'        => 'required|min:5|unique:users,username',
              'email'           => 'required|email|unique:users,email',
              'password'        => 'required|min:8',
          );
      
          // run the validation rules on the inputs from the form
          $validator = Validator::make(Input::all(), $rules);
      
          $validator->setPresenceVerifier($verifier);
        CommentAdd your comment...
      1.  
        1
        0
        -1

        제가 아는 범위에서는 원하는 헬퍼 함수는 따로 없을것 같고,

        validation rule을 확장해서 데이터베이스 연결하면 될 것 같습니다.

        https://laravel.com/docs/5.6/validation#using-extensions


        하지만 서비스 구조에 따라 api를 만들어 사용하는게 더 좋을수도 있습니다.

        가령 사용자를 생성하는 로직을 따로 분리해서

        class UserService {
        	public function create(array $data)
        	{
        		$response = $httpClient->get('/user정보 저장 서버/user/check/1');
        		if ($response->status !== OK) {
        			throw new DuplicatedUserException();
        		}
        
        
        		return User::create($data);
        	}
        }

        대충 이런 느낌으로..


        서비스 규모나 구조등을 고려해서 관리하기 편한 방법으로 만들면 될 것 같습니다.

          CommentAdd your comment...