【问题标题】:Relationship use difference connection关系使用差异连接
【发布时间】:2019-08-29 12:05:58
【问题描述】:

我需要从关系中的不同数据库中获取数据,如下所示:

Table1::development(1)->with([ 'column' => function($q) {
    $q->connection('live');
}])->first()

development 是我的 Table1 模型上的本地范围,它只是执行 where 子句。

我在上面的代码中遇到了一个我无法弄清楚的错误:

错误:BadMethodCallException:调用 /var/www/vendor/illuminate/database/Query/Builder.php:2445 中未定义的方法 Illuminate\Database\Query\Builder::connection()

谁能帮帮我?

【问题讨论】:

  • 我不认为你可以使用跨数据库连接的关系,因为 Laravel 在内部创建连接等。我建议在另一个数据库上获取数据,然后用它来过滤另一个数据库。
  • @BagusTesa 如果我更改关系模型上的连接,这可以正常工作,但是此模型在其他地方使用,因此我无法全局更改连接。

标签: php eloquent


【解决方案1】:

设法弄清楚,不确定这是否是最好的方法。我只是将我的条件添加到模型中的构造中,然后在那里交换连接。

/**
     * Create a new Eloquent model instance.
     *
     * @param  array  $attributes
     * @return void
     */
    public function __construct(array $attributes = [])
    {
        parent::__construct();

        if (env('MODE') === 'mode2') {

            $this->setConnection('live');

        }
    }

【讨论】:

    猜你喜欢
    • 2010-09-29
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多