Я использую Slim Framework с Eloquent 4.1.x в качестве ORM для проекта и нуждаюсь в подключении к нескольким базам данных.Slim Framework с ORM (Eloquent) connect multiple db
Я следовал за этим link, чтобы установить ORM. Но как я могу подключиться к нескольким базам данных, следуя данному учебнику?
В моих моделях у меня есть разные файлы, которые используются для разных таблиц в разных базах данных.
Как файл User.php имеет следующее,
<?php
namespace Service\Framework\Model;
use Illuminate\Database\Eloquent\Model;
class Users extends Model {
protected $table = 'users';
}
Этот класс использует таблицу пользователей в базе данных db_2. Я хочу переключиться с базы данных db_1 по умолчанию в методе этого класса. Например,
<?php
namespace Service\Framework\Model;
use Illuminate\Database\Eloquent\Model;
class Users extends Model {
protected $table = 'users';
public function getUsers() {
// Switch the database to db_2
$users = self::all();
// Again switch back to default database db_1
return $users;
}
}
Как это сделать? Пожалуйста, помогите мне с некоторыми предложениями.
P.S: Я не использую капсулу здесь.
EDIT # 1 Поэтому код, я использую для установки одного соединения заключается в следующем,
$settings = array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'db_1',
'username' => 'dbuser',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => ''
);
// Bootstrap Eloquent ORM
$container = new Container();
$connFactory = new ConnectionFactory($container);
$conn = $connFactory->make($settings);
$resolver = new ConnectionResolver();
$resolver->addConnection('default', $conn);
$resolver->setDefaultConnection('default');
Model::setConnectionResolver($resolver);
Спасибо Майк, один запрос хотя. Как настроить несколько соединений с кодом, который я использую? Любая догадка? Я обновил свой вопрос с помощью фрагмента кода. Пожалуйста, предложите. –
Я действительно не использую Eloquent, но смотрю на код, скорее всего, создавая еще один объект $ conn, например $ conn2 с разными $ настройками. Затем вызовите что-то вроде $ resolver-> addConnection ('mysql2', $ conn2); –
Майк, да, это решило мою проблему. Хотя мне пришлось использовать Capsule позже, но основная идея была такой же. –