我正在尝试以方便的方式配置主/从数据库连接。我遇到的更简洁的方法是在数据库配置文件中单独使用读/写主机。
'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' => '',
],
在某些情况下,我需要从主数据库中读取数据(没有复制延迟)。有没有办法明确指定这个?像我们将连接名称传递给connection()方法?
答案 0 :(得分:4)
如果您想强行使用单行内容中的写连接,您可以随时执行以下操作:
$user = User::onWriteConnection()->find(1);
答案 1 :(得分:2)
几分钟后我发现可以通过指定' mysql :: write'到db连接方法。因此,如果我们需要使用我的问题中的配置从主数据库中读取数据,我们可以执行类似DB::connection('mysql::write')
的操作。希望它对其他人有用。
答案 2 :(得分:1)
我首先要创建两个独立的mySql连接,mysqlMaster和mysqlSlave。然后我将mysqlSlave设置为默认值。
然后,您可以在需要访问主连接时使用函数setConnection(' mysqlMaster')。
$model = new Model();
$model->setConnection('mysqlMaster');
$result = $model->find(1);
答案 3 :(得分:1)
我分别创建了读取/写入主机,并且在应用程序中遵循模块化方法。如果要强制特定模型从 write 头获取数据,则在Laravel模型中,您需要定义连接,例如:
class YourModelName extends Model {
protected $connection = 'mysql::write';
public $table = 'YourTableName';
}
在上面的示例中, protected $ connection ='mysql :: write'; 强制您的应用程序在您使用 YourModelName <的地方从写头执行 mysqlselect 语句/ strong>