Laravel - 如何从不同的数据库连接加入2个表?

use*_*861 8 php query-builder laravel laravel-query-builder

我有一个使用2个数据库的应用程序.我需要创建一个查询,将一个数据库中的表连接到另一个数据库表,但我不知道该怎么做.

所以,我有一个连接名称mysqlphc.我可以毫无问题地与两者沟通.

现在,我正在尝试执行此查询:

$artigos = DB::connection('phc')->table('st')
        ->join('mysql.cart', 'mysql.cart.id_item', '=', 'st.ststamp')
        ->select('st.ststamp', 'st.ref', 'st.design', 'st.imagem', 'mysql.cart.qtt')
        ->where('mysql.carts.id_user','=',Auth::id())
        ->paginate(10);
Run Code Online (Sandbox Code Playgroud)

但是回报我: General error: 20018 Invalid object name 'mysql.cart'

我想访问连接mysql表购物车和连接phc表st.

我怎么解决这个问题?

谢谢

小智 4

尝试删除连接('phc')并为 php 表添加前缀,就像处理 mysql 表一样。您正在选择连接,因此查询构建器应该理解它将使用连接名称为您的表添加前缀。因此,当您输入“mysql.cart”时,查询生成器将执行“phc.mysql.cart”。

$artigos = DB::table('phc.st')
        ->join('mysql.cart', 'mysql.cart.id_item', '=', 'phc.st.ststamp')
        ->select('phc.st.ststamp', 'phc.st.ref', 'phc.st.design', 'phc.st.imagem', 'mysql.cart.qtt')
        ->where('mysql.carts.id_user','=',Auth::id())
        ->paginate(10);
Run Code Online (Sandbox Code Playgroud)