我在 Laravel 控制器中将模型作为参数传递时遇到问题。控制器连接到默认数据库,而不是我公司服务中设置的动态数据库配置。
我的型号代码:
namespace App\Models\Rdms\Settings;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class DataList extends Model
{
public $table = 'dataList';
public $connection = 'mysql';
const CREATED_AT = 'createdAt';
const UPDATED_AT = 'updatedAt';
protected $fillable = [
'name',
'text',
'type',
];
}
我的控制器代码:
public function edit(DataList $datalist)
{
try {
return $this->responseJson(['dynamicRecord' => $datalist], true, '', 200);
} catch (\Exception $e) {
return $this->responseJson([], false, $e->getMessage(), 500);
}
}
我的服务数据库配置是:
public function connectDb($id)
{
$details = $this->rdmscompanyRepo->where(['id' => $id, 'active_status' => 1])->first();
if ($details) {
$dbDetails = json_decode($details->encry_data);
/* Get HOST Details */
$dbHost = $this->helpRepo->decrypt(@$dbDetails->host);
$dbPort = $this->helpRepo->decrypt(@$dbDetails->port);
$dbUserName = $this->helpRepo->decrypt(@$dbDetails->username);
$dbPass = $this->helpRepo->decrypt(@$dbDetails->password);
$dbName = $this->helpRepo->decrypt(@$dbDetails->database);
Session::put('db_company_dbhost', $dbHost);
Session::put('db_company_dbport', $dbPort);
Session::put('db_company_dbusername', $dbUserName);
Session::put('db_company_dbpassword', $dbPass);
Session::put('db_company_dbname', $dbName);
/* Connect Dynamic database */
DB::purge('mysql');
DB::disconnect('mysql');
Config::set('database.connections.mysql', [
'driver' => 'mysql',
'port' => $dbPort,
'host' => $dbHost,
'database' => $dbName,
'username' => $dbUserName,
'password' => $dbPass,
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
]);
DB::reconnect('mysql');
}
}
我试图在模型中设置连接,但它显示错误不起作用
public $connection = 'mysql';
它也不起作用它连接默认的环境数据库而不是我的配置
请提供任何解决方案或想法
提前致谢