我有一个使用2个数据库的应用程序。我需要创建一个查询,该查询将一个数据库中的表与另一个数据库中的表联接起来,但是我不知道该怎么做。
因此,我有一个连接名mysql
和phc
。我可以毫无问题地与他们交流。
现在,我正在尝试执行以下查询:
$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。
我该如何解决?
谢谢
答案 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);