Illuminate\Database\Query\Builder 类的对象无法转换为字符串,无法在单个查询中从两个数据库中获取数据

Posted

技术标签:

【中文标题】Illuminate\\Database\\Query\\Builder 类的对象无法转换为字符串,无法在单个查询中从两个数据库中获取数据【英文标题】:Object of class Illuminate\Database\Query\Builder could not be converted to string, unable to get data from two databases in a single queryIlluminate\Database\Query\Builder 类的对象无法转换为字符串,无法在单个查询中从两个数据库中获取数据 【发布时间】:2017-07-02 06:27:15 【问题描述】:
class Report extends Eloquent 

protected $connection1 = 'mysql1';
    protected $table1 = 'table1';

protected $connection2 = 'mysql2';
    protected $table2 = 'table2';

public function getdetails() 

$mysql1_conn = DB::connection('mysql1');

$mysql2_conn = DB::connection('mysql2');

$result = $mysql1_conn->table('table1 as t1')
          ->$mysql2_conn->table('table2 as t2')
         ->ON('t1.userid' , '=' , 't2.userid')
         ->select('t1.id','t2.name','t1.number','t2.address')
         ->get();

        return $result;


我收到错误消息

" Illuminate\Database\Query\Builder 类的对象无法转换为字符串"

【问题讨论】:

【参考方案1】:

您不能使用两个数据库连接运行单个查询。

【讨论】:

是我的查询语法有问题还是无法从这种类型的数据对象中获取数据。 将 get() 替换为 toSql() 并查看生成的查询 类 Illuminate\Database\Query\Builder 的对象无法在第 '->$mysql2_conn->table('table2 as t2')' 行转换为字符串 此代码无效。你想达到什么目的?您将无法在一个查询中使用 2 个连接。并且 $mysql2_conn->table('table2 as t2') 返回查询生成器,因此出现错误。

以上是关于Illuminate\Database\Query\Builder 类的对象无法转换为字符串,无法在单个查询中从两个数据库中获取数据的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 查询错误 - 调用未定义的方法 Illuminate\Database\Query\Builder::query()

调用未定义的方法 Illuminate\Database\Query\Builder::when()

BadMethodCallException : 方法 Illuminate\Database\Query\Builder::offers 不存在

Laravel:调用未定义的方法 Illuminate\\Database\\Query\\Builder

调用未定义的方法 Illuminate\Database\Query\Builder::unique()

“使用 Laravel 调用未定义的方法 Illuminate\\Database\\Query\\Builder::users() [关闭]