Laravel - Как объединить 2 таблицы из разных соединений БД? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть приложение, которое использует 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 table cart и connection phc table st.

Как мне решить эту проблему?

Спасибо

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

это мой код для объединения двух таблиц:

$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);
0 голосов
/ 06 октября 2018

Быстрое решение для этого - объединить два дБ в один и делать то, что вы хотите.

0 голосов
/ 04 октября 2018

Попробуйте удалить соединение ('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);
...