Laravel Guzzle 请求获取错误的数据库连接
Laravel Guzzle Request gets wrong DB Connection
我正在尝试从一个 Laravel 项目向另一个项目发出请求。我遇到的问题是第二个 Laravel 正在使用第一个 Laravel 数据库连接。所以它抱怨说 table 不存在。
这是我正在使用的代码。
$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>";
有没有人遇到过这样的事情?
解决这个问题的方法是 运行 两个 Laravel 项目都在同一台服务器上,是更改 .env 文件中的环境变量名称。
DB_DATABASE=XXXX
变成
XXX_DB_DATABASE=XXXX
这需要在 Laravel 设置之一上完成,然后一切正常。
您可以像这样更改默认的数据库连接运行时:
假设你有
- 1 个具有默认数据库设计时凭据的安全数据库。
- 1 个或多个数据库包含 1 个或多个用户的数据。
您使用安全数据库登录并根据用户将默认数据库更改为数据数据库。
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');
如果您不需要这种灵活性,您可以为每个模型定义连接:
class A extends Model {
protected $connection = 'security';
protected $table = 'A';
}
我正在尝试从一个 Laravel 项目向另一个项目发出请求。我遇到的问题是第二个 Laravel 正在使用第一个 Laravel 数据库连接。所以它抱怨说 table 不存在。
这是我正在使用的代码。
$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>";
有没有人遇到过这样的事情?
解决这个问题的方法是 运行 两个 Laravel 项目都在同一台服务器上,是更改 .env 文件中的环境变量名称。
DB_DATABASE=XXXX
变成
XXX_DB_DATABASE=XXXX
这需要在 Laravel 设置之一上完成,然后一切正常。
您可以像这样更改默认的数据库连接运行时:
假设你有
- 1 个具有默认数据库设计时凭据的安全数据库。
- 1 个或多个数据库包含 1 个或多个用户的数据。
您使用安全数据库登录并根据用户将默认数据库更改为数据数据库。
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');
如果您不需要这种灵活性,您可以为每个模型定义连接:
class A extends Model {
protected $connection = 'security';
protected $table = 'A';
}