首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel读/写连接-显式指定

问Laravel读/写连接-显式指定
EN

Stack Overflow用户
提问于 2016-06-01 00:09:59
回答 4查看 5.1K关注 0票数 6

我正在尝试以一种方便的方式配置主/从数据库连接。我遇到的更干净的方法是在数据库配置文件中单独使用读/写主机。

代码语言:javascript
复制
'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()方法?

EN

回答 4

Stack Overflow用户

发布于 2017-07-20 22:16:41

如果你想强制eloquent在一个一行中使用write连接,你可以随时执行以下操作:

$user = User::onWriteConnection()->find(1);

票数 9
EN

Stack Overflow用户

发布于 2016-06-01 20:53:23

几分钟前,我发现可以通过在db连接方法中指定'mysql::write‘来实现。因此,如果我们需要使用我的问题中的配置从主数据库读取数据,我们可以执行类似DB::connection('mysql::write')的操作。希望它能对其他人有用。

票数 5
EN

Stack Overflow用户

发布于 2019-07-22 19:47:33

我单独创建了读/写主机,并且在我的应用程序中遵循模块化方法。如果你想强制一个特定的模型从获取数据,写头,那么在Laravel模型中你需要定义连接,例如:

代码语言:javascript
复制
class YourModelName extends Model {
  protected $connection = 'mysql::write';
  public $table = 'YourTableName';
}

在上面的示例中,protected $connection = 'mysql:: write ';强制您的应用程序在使用YourModelName的任何地方从写头执行mysqlselect语句

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37550722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档