2017-02-02 5 views
1

한 Laravel 프로젝트에서 다른 Laravel 프로젝트로 요청을하려고합니다. 내가 얻는 이슈는 두 번째 Laravel이 첫 번째 Laravel Database Connection을 사용하고 있다는 것입니다. 그래서 테이블이 존재하지 않는다고 불평하고 있습니다.Laravel Guzzle Request가 잘못된 DB 연결이되었습니다.

여기에 제가 사용하고있는 코드가 있습니다.

$data = ['test' => 'foobar']; 
$client = new \GuzzleHttp\Client(); 
$url = getenv('API_BASE') . 'stock-list'; 

$res = $client->request('POST', $url, [ 
    'headers' => [ 
     'X-Public' => getenv('API_PUBLIC'), 
     'X-Hash' => ApiService::Encrypt(getenv('API_PRIVATE'), json_encode($data)), 
    ], 
    'json' => $data, 
    'http_errors' => false, 
]); 

echo "<pre>" . print_r($res->getBody()->getContents(), true) . "</pre>"; 

누구나 이런 식으로 된 사람이 있습니까?

+0

본문, 당신은 문자열로 그것을 캐스팅해야합니다. –

답변

0

는이 같은 기본 DB 연결 런타임을 변경할 수 있습니다

은 그래서 당신이 기본 DB 설계 시간입니다 자격 증명을

  • 1 보안 DB가 있다고 가정 해 보자.
  • 1 명 이상의 사용자에 대한 데이터가 포함 된 하나 이상의 데이터베이스.

보안 db를 사용하여 로그인하고 사용자에 따라 기본 db를 데이터 db로 변경하십시오.

config(['database.connections.data' => array(
       'driver' => 'sqlsrv', 
       'host' => $connection['Database_Server'], 
       'database' => $connection['Database_Name'], 
       'username' => $connection['Database_User'], 
       'password' => $connection['Database_Password'] 

      )]); 

      DB::setDefaultConnection('data'); 

당신이 그런 유연성을 필요로하지 않는 경우 모델 당 연결을 정의 할 수 있습니다

안전하게 전체를 반환 할 경우 getContents는, 스트림의 나머지를 반환 할 것을 언급 할 가치가
class A extends Model { 
    protected $connection = 'security'; 
    protected $table = 'A'; 
} 
+1

내가 가지고 있었던 문제는 다른 Laravel 프로젝트를 호출 할 때 .env 변수가 무시되었다는 것입니다. –

+0

자, 이제 문제가 해결 되었습니까? 그렇지 않으면 연결을 위해 .env를 사용하지 않고 대신 모델이 작동합니다! –

1

동일한 서버에서 두 Laravel 프로젝트를 실행 중일 때이 문제를 해결하는 방법은 .env 파일의 환경 변수 이름을 변경하는 것입니다.

DB_DATABASE=XXXX 

는이 모든 것이 제대로 작동 후 Laravel의 설정 중 하나를 수행해야합니다

XXX_DB_DATABASE=XXXX 

된다.