Confluence 에 심각한 보안 취약점이 발견되었으니 사용자분들은 업그레이드 하세요.!
 
1
0
-1

안녕하세요. 라라벨 입문하게된 초보입니다.


DB1 , DB2 , DB3  동일한 스키마를 사용하는  DB가 .env에 정의 되어 있습니다.


사이트 접속시에 특정변수 $_POST['CODE'] 에 따라서 

switch( $_POST['CODE'] ){

   case "1" : DB = DB1 ; break;

  case "2" : DB = DB2 ; break;

  case "3" : DB = DB3 ; break;

}

이런식으로 해서 모든곳에서 DB명을 변경없이 하나의 쿼리로 가능 한지가 알고 싶습니다.


$users = DB::connection('DB1')→select(...);

이렇게 쓰지 않고 바로 

 $users = DB::select('select * from users where active = ');

이렇게 사용 하고 싶은데 간단한 방법이 없을까요?


프레임워크를 안쓰면 무지 간단한 문제인데...라라벨로 해결할려니  기본 개념이 부족하여 헤메고 있습니다.


도움주실분 있으시면 감사하겠습니다.

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      아래와 같은 방법으로는 안되시려나요 ?

      switch($request->code) {
      	case 1:
      		$db = 'schema_name';
      	case 2:
      		$db = 'schema_name';
      	case 3:
      		$db = 'schema_name';
      }
      
      
      $users = DB::select("select * from $db where active = 1");
      1. 호랭이여우
        주신 코드로는 이렇게 하고 싶습니다.


        switch($request->code) {
        	case 1:
        		$db = 'db1';
        	case 2:
        		$db = 'db2';
        	case 3:
        		$db = 'db3';
        }
        
        $users = $db::select("select * from user where active = 1");


        그리고 switch 부분을 서비스 주입이나 상속같은 방법을 사용하여 한번 적용으로   모든 모델에서 사용 가능 한지도 알고 싶습니다.


      CommentAdd your comment...