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

时间:2018-10-04 10:58:13

标签: php laravel query-builder 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);

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

我要访问连接mysql表cart和连接phc表st。

我该如何解决?

谢谢

3 个答案:

答案 0 :(得分:2)

尝试删除连接('phc'),并像使用mysql表一样为php表添加前缀。 您正在选择连接,因此查询构建器应了解它将为表加上连接名。 因此,当您键入“ 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);

答案 1 :(得分:0)

对此的一种快速解决方案是将两个数据库集成到一个数据库中,然后执行您想要的操作。

答案 2 :(得分:-1)

这是我连接两个表的代码:

$departmetns = DB::table('department')
      ->select('department.*', 'faculty.name as f_name')
      ->join('faculty','department.faculty_id', '=' ,'faculty.id')
       ->get();

就您而言

USE DB;

DB::table('st')
    ->select('st.ststamp', 'st.ref', 'st.design', 'st.imagem', 'cart.qtt')
    ->join('cart', 'st.ststamp', '=', 'cart.id_item')
    ->where('carts.id_user','=',Auth::id())
    ->paginate(10);