我正在尝试使用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
中选择 )*
2条答案
按热度按时间fzwojiic1#
如果您有两个数据库,请确保执行以下操作:
和它影响两个数据库。
您的错误是找不到表,而不是连接失败。
vkc1a9a22#
我发现了这个:
$users = User::on('secondary_db')->get();
**可以工作。**on()方法允许您指定用于特定查询的数据库连接的名称。