2017-02-02 11 views
1

私は1つのLaravelプロジェクトから別のLaravelプロジェクトにリクエストをしようとしています。私が得ている問題は、2番目のLaravelが最初のLaravel Database Connectionを使用しているということです。だから、テーブルが存在しないと不平を言っている。Laravel Guzzleリクエストが間違った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セキュリティデシベルを持っているとしましょう。
  • 1人以上のユーザーのデータを含む1つ以上のデータベース。

セキュリティデータベースを使用してログインし、ユーザーに基づいてデフォルトの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 

になります。

関連する問題