I have two similar tables in two different databases. Both tables have a column with a date and one with email addresses. Though the column names are not the same. As result I want to have one result that contains all records from both tables.
So my first step is:
$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');
So now I have two results and the column names in the result are equal (email and created_at).
Now I want to merge the results together, so I do:
$all_emails = $emails_1->union($emails_2);
And this is where I get the error:
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
))
So it seems that query builder gets confused with the diferente tables.
Has anyone help?
You can't use different connections, but you still can do it providing the db name explicitly:
You cannot do a UNION query across connections. You'll have to do it as two separate queries: