У меня есть две одинаковые таблицы в двух разных базах данных. Обе таблицы имеют столбец с датой и один с адресами электронной почты. Хотя имена столбцов не совпадают. В результате я хочу получить один результат, содержащий все записи из обеих таблиц.Объединенные запросы из разных баз данных в Laravel Query Builder
Итак, мой первый шаг:
$emails_1 = DB::connection('db1')->table('contacts_1')->select('mail_address AS email', 'date as created_at');
$emails_2 = DB::connection('db2')->table('contacts_2')->select('email', 'created_at');
Так что теперь у меня есть два результата и имена столбцов в результате равны (по электронной почте и created_at).
Теперь я хочу, чтобы объединить результаты вместе, так что я:
$all_emails = $emails_1->union($emails_2);
И это, где я получаю ошибку:
Base table or view not found: 1146 Table 'db1.contacts_2' doesn't exist (SQL: (select
mail_address
asdate
ascreated_at
fromcontacts_1
) union (selectcreated_at
fromcontacts_2
))
Таким образом, кажется, что конструктор запросов путается с разные таблицы.
Помощи ли кто-нибудь?
Является ли $ электронной почты таким образом, все еще экземпляр БД, где я могу делать такие вещи, как $ emails-> где ('...') -> get(); ? – almo
@almo - Nope. '$ emails' - простой массив. Если вы хотите добавить больше ограничений, вам придется добавить их к обоим запросам отдельно. –
не используют array_merge, его не правильно –