Присоединение подзапроса из другой базы данных в Laravel

Я пытаюсь присоединиться к подзапросу к основному запросу с помощью Laravel Query Builder в контексте, аналогичном приведенному ниже примеру. Я предполагал, что основной запрос распознает это, указав базу данных и таблицу, используемые подзапросом. Однако Laravel выдает следующую ошибку SQL:

SQLSTATE[42S02]: базовая таблица или представление не найдены: 1146 Таблица «data_source2.data_table1» не существует

Я попытался добавить к исходному запросу префикс «data_source1», но все равно сталкиваюсь с той же ошибкой, что показана выше.

$source_query = DB::connection('data_source1')
    ->table('data_table1')
    ->select(DB::raw('
        SUM(data_table1.value) as value
    '))
   
$data = DB::connection('data_source2')
    ->table('data_table2')
    ->joinSub($source_query, 'source_query', function ($join) {
        $join->on('data_table2.hour', '=', 'source_query.hour');
    })
    ->where('date', '=', $date)
    ->select(DB::raw('
        source_query.value as value,
    '))
    ->get();

Есть ли в соединении data_source2 таблица базы данных с именем data_table1?

AntonyMN 05.04.2024 17:02

в data_source2 нет таблицы data_table1 @AntonyMN

James 05.04.2024 17:03
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В итоге я понял это для всех, кто сталкивается с этим, если вы хотите использовать joinSub(), когда запросы используют базовые таблицы в разных базах данных.

используйте следующее в подзапросе, к которому вы будете присоединяться:

$source_query = DB::table('data_source1.data_table1')

скорее, чем:

$source_query = DB::connection('data_source1')
    ->table('data_table1')

Другие вопросы по теме