Ответ 1
Обновление: этот ответ с 2015 года! Я не использовал Laravel в течение многих лет, и я не в курсе последних лучших практик. За этот ответ проголосовали, поэтому я думаю, что он работает, но, пожалуйста, действуйте осторожно.
Ну, мой немедленный ответ на это: не надо. Скорее всего, вы можете выполнить свою задачу, изменив модель данных и работая с более сложными отношениями. Трудно сказать, не зная, что вы хотите сделать, но мне кажется, что это плохая идея в целом, особенно если вы планируете использовать красноречивые модели и т.д.
Тем не менее, в некотором сценарии, когда вам действительно нужно изменить данные в другой базе данных или выполнить какой-то необработанный запрос, вы можете использовать метод DB::connection()
. Что-то вроде:
$data = DB::connection('another_connection')->select(...);
Вы можете указать эту переменную another_connection
в вашем файле database.php
. Как это:
<?php
return array(
'default' => 'mysql',
'connections' => array(
# Your regular connection
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'database',
'username' => 'user',
'password' => 'password'
'charset' => 'utf8',
),
# Your new connection
'another_connection' => array(
'driver' => 'mysql',
'host' => 'another_host',
'database' => 'another_db',
'username' => 'user1',
'password' => 'password1'
'charset' => 'utf8',
),
),
);
Вы даже можете указать соединение для каждой красноречивой модели, используя protected $connection = 'another_connection';
также вы можете указать соединение для каждого экземпляра модели, созданного/запрошенного во время выполнения
$user = new User;
$user->setConnection('another_connection');
$user1 = $user->find(1);
Но опять же, я лично не думаю, что это хорошая идея, и мне кажется, что все может запутаться и очень быстро развалиться, поскольку ваше приложение усложняется.