【问题标题】:Laravel Connection for Sub-query子查询的 Laravel 连接
【发布时间】:2014-09-24 23:28:30
【问题描述】:

我正在使用 Laravel 4.1。

我正在尝试从表中获取记录列表,其中用户 ID 在用户表中不作为 ID 存在。

我正在尝试创建一个带有子选择的查询。主查询和子查询都需要使用非默认连接。

我试过了:

    DB::connection('database')
        ->table('table')
        ->whereNotIn('userid', function($query)
        {
            $query->select('id')
                ->from('user');
        })->get();

当我打印出 sql 并在 MySQL 工作台中运行它时,我得到了预期的结果。 但我感觉子选择是在默认连接上完成的,而不是我尝试使用的连接。

请帮忙。

【问题讨论】:

  • 两者使用同一个对象,所以都使用同一个连接。
  • @JarekTkaczyk,你是对的

标签: laravel laravel-4


【解决方案1】:

我做了一个测试,它似乎工作正常。如果您有查询,$query->select('id')->from('user'); 也将在 database 连接上运行。

您可以自行测试。在from('user') 中,您应该将默认连接存在的表名放入database 连接中不存在的表名。如果子查询将使用默认连接,应用程序不应该抛出任何异常,但实际上它确实如此,因为该表在database 连接中不存在

【讨论】:

  • 我尝试过以这种方式将连接添加到子查询中。但我收到错误“调用未定义的方法 Illuminate\Database\Query\Builder::connection()”
  • 我再次查看了我的代码。这是导致问题的代码的另一部分。
猜你喜欢
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 2020-03-12
  • 2014-02-19
  • 2015-10-11
  • 2012-12-28
  • 2020-04-10
相关资源
最近更新 更多