【问题标题】:Laravel - How to join 2 tables from different db connection?Laravel - 如何连接来自不同数据库连接的 2 个表?
【发布时间】:2019-03-09 17:55:17
【问题描述】:

我有一个使用 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 table cart 和连接 phc table st。

我该如何解决这个问题?

谢谢

【问题讨论】:

  • 我认为这不是真的,因为您需要在开始连接时选择数据库。在 mysql cli 应用程序中,您键入 use database_name 并在此数据库中工作,对于其他数据库中的工作,您需要 use other database_name2 并工作。我认为您需要在没有 eloquen 的情况下直接运行查询。例如看到这个问题stackoverflow.com/questions/11426929/…
  • 对不起我的英语
  • 您的数据库是否位于不同的服务器上?
  • 签出此答案here,希望对您有所帮助。

标签: php laravel query-builder laravel-query-builder


【解决方案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);

【讨论】:

  • 这不是不同数据库之间的@KhalilDaNish
  • 我知道这是针对同一个数据库中的两个表。
【解决方案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);

【讨论】:

  • 如果我尝试这样做会返回我未找到基表或视图:1146 表 'mysql.cart' 不存在 @FábioNunes
  • 您的数据库是否在同一个实例上?
猜你喜欢
  • 2013-11-11
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 2017-01-30
  • 2019-08-11
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多