Laravel - 在控制器中将模型作为参数传递连接到默认数据库而不是动态数据库配置

问题描述 投票:0回答:0

我在 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';

它也不起作用它连接默认的环境数据库而不是我的配置

请提供任何解决方案或想法

提前致谢

laravel database environment-variables database-connection multi-database-connections
© www.soinside.com 2019 - 2024. All rights reserved.