我正在尝试以一种方便的方式配置主/从数据库连接。我遇到的更干净的方法是在数据库配置文件中单独使用读/写主机。
'mysql' => [
'read' => [
'host' => '192.168.1.1',
],
'write' => [
'host' => '196.168.1.2'
],
'driver' => 'mysql',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
],在某些情况下,我需要从master db读取数据(没有复制延迟)。有没有办法显式地指定这一点?类似于我们将连接名传递给connection()方法?
发布于 2017-07-20 22:16:41
如果你想强制eloquent在一个一行中使用write连接,你可以随时执行以下操作:
$user = User::onWriteConnection()->find(1);
发布于 2016-06-01 20:53:23
几分钟前,我发现可以通过在db连接方法中指定'mysql::write‘来实现。因此,如果我们需要使用我的问题中的配置从主数据库读取数据,我们可以执行类似DB::connection('mysql::write')的操作。希望它能对其他人有用。
发布于 2019-07-22 19:47:33
我单独创建了读/写主机,并且在我的应用程序中遵循模块化方法。如果你想强制一个特定的模型从获取数据,写头,那么在Laravel模型中你需要定义连接,例如:
class YourModelName extends Model {
protected $connection = 'mysql::write';
public $table = 'YourTableName';
}在上面的示例中,protected $connection = 'mysql:: write ';强制您的应用程序在使用YourModelName的任何地方从写头执行mysqlselect语句
https://stackoverflow.com/questions/37550722
复制相似问题