我有2个不同的数据库,我可以在 config \ database.php 和模型<中设置2个不同的数据库,其中包含2个不同的'conection' => ['database01' => [ ...
和'conection' => ['database02' => [ ...
/ strong> with
protected $connection = '1database';
和
protected $connection = '2database';
但我想使用一个控制器并插入类似的条件
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
if (\Session::get('db')=='database01'){
use App\Model01;
}else{
use App\Model02;
}
此解决方案不起作用,但应该是完美的解决方案。 我可以做类似的事情,但现在是很多时间。
public function index()
{
if ($baseDat1){
$data= Data01::orderBy('id', 'desc')->take(25)->get();
}else{
$data= Data02::orderBy('id', 'desc')->take(25)->get();
}
}
如果可以做我想要的事情?
答案 0 :(得分:1)
导入它们。然后在if
语句中启动正确的一个。像这样:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Model01;
use App\Model02;
// ...
// Your controller
if (\Session::get('db')=='database01'){
$model = app()->make(Model01::class);
} else {
$model = app()->make(Model02::class);
}
// And now you can make queries with your $model like this
$results = $model->where(condition)->get();
答案 1 :(得分:1)
您可以为此目的实施特质。并在您的模型中使用它。
cid
答案 2 :(得分:0)
您可以在\ App \ Providers \ AppServiceProvider :: boot()方法中设置默认数据库连接。
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
if (true) {
$this->app['db']->setDefaultConnection('database_01');
} else {
$this->app['db']->setDefaultConnection('database_02');
}
}
答案 3 :(得分:0)
您可以使用辅助函数
更改配置数据库文件 1 - 创建辅助函数changeDatabases($database)
2 - 更改配置数据库
if(database == 'baseDat1'){
config(['database.connections.mysql.host' => 'newHost']);
config(['database.connections.mysql.database' => 'newDatabase']);
config(['database.connections.mysql.username' => 'newUsername']);
config(['database.connections.mysql.password' => 'newPassword']);
}
3 - 如果它们不相等,你必须创建两个不同的模型
会话持续时间的变化很好