2014-02-03 2 views
3

У меня есть проект, который соединяется с другой базой данных, и я хочу присоединиться к этим таблицам из разных баз данных, используя laravel 4. Я уже искал об этой проблеме, но я не могу найти правильный ответ , Возможно ли объединение таблиц из разных баз данных в laravel 4? Если возможно, может ли кто-нибудь помочь мне, как построить запрос для этого?Laravel 4: Объединить таблицы из разных баз данных

+0

Вы уверены, что это не разные таблицы? Вы не можете присоединиться к другой базе данных. Это просто предел SQL. – Ken

+0

Да, конечно. Я нашел этот запрос, 'SELECT u1. * FROM database1.users u1 LEFT JOIN database2.users u2 ON u1.id = u2.id WHERE u2.id IS NOT NULL;' но не в laravel 4. Я хочу попробовать этот запрос используя laravel 4. – ally

ответ

11

Вы можете сделать то, что с помощью DB class:

$results = DB::select('select * from database1.users u1 LEFT JOIN database2.users u2 ON u1.id = u2.id WHERE u2.id = ?', array(5)); 

Вы также можете использовать Fluent для построения запроса, который будет выглядеть примерно так:

$users = DB::table('db1.users as db1') 
    ->select('db1.*') 
    ->leftJoin('db2.users as db2', 'db1.id', '=', 'db2.id') 
    ->where('db2.id', 5) 
    ->get(); 
+0

Morgon, у меня есть другой вопрос, где я должен получить базу данных1, database2 и т. д.? Я знаю, я просто настрою информацию о базе данных в файле конфигурации, но как я могу объявить или вызвать определенную базу данных? – ally

+0

В этом случае это будет то, что назвали базы данных в MySQL. Если ваша база данных проекта Laravel называется «laravel», и у вас есть данные в другой базе данных под названием «lookup» или что-то в этом роде, вы просто подставляете «database1» и «database2» этими значениями, предполагая, что ваш пользователь MySQL имеет доступ к обеим базам данных , – Morgon

+1

Привет, Моргон, спасибо за помощь. Я протестировал запрос, и он работает! – ally

Смежные вопросы