多个数据库连接时出现Laravel Eloquent ORM错误

oxf4rvwz  于 2023-03-04  发布在  其他
关注(0)|答案(2)|浏览(118)

我正在尝试使用Laravel Eloquent ORM来与应用程序中的两个不同的数据库交互。我在config/database.php文件中定义了这两个数据库连接,如下所示:

'connections' => [

    'primary_db' => [
        'driver' => 'mysql',
        'host' => 'localhost',
        'database' => 'primary_db',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

    'secondary_db' => [
        'driver' => 'mysql',
        'host' => 'localhost',
        'database' => 'secondary_db',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

],

我可以使用DB::connection()方法连接到两个数据库,但是当我尝试使用Eloquent查询第二个数据库时,我得到了一个"undefined table"错误。

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $connection = 'secondary_db';
    protected $table = 'users';
}

当我尝试使用以下代码检索所有用户时:$users = User::all();我明白了:* * 说明\数据库\查询异常:数据库状态[42S02]:未找到基表或视图:1146表'primary_db. users'不存在(SQL:从users中选择 *

fzwojiic

fzwojiic1#

如果您有两个数据库,请确保执行以下操作:

php artisan migrate
php artisan db:seed

它影响两个数据库。

您的错误是找不到表,而不是连接失败。

vkc1a9a2

vkc1a9a22#

我发现了这个:$users = User::on('secondary_db')->get();**可以工作。**on()方法允许您指定用于特定查询的数据库连接的名称。

相关问题