overals
(Evgenygor89)
June 20, 2016, 7:25pm
1
Доброго времени суток.
Начал переносить проект с yii на yii2. И уперся в проблеме горизонтального и вертикального шардинга для моделей AR.
Есть ли номральный вариант для этого?
Хотелось бы переделать конструктор, для передачи числа и в зависимости от этого числа менять коннекшин, но в yii2 метод getdb статический.
Нашел только такое решение на гите "/axiles89/yii2-sharding" но мне оно показалось слишком сложным и не удобным. Есть ли другой способ?
samdark
(Alexander Makarov)
June 21, 2016, 5:25pm
2
У axiles89 вроде нормальное решение.
overals
(Evgenygor89)
June 21, 2016, 8:13pm
3
Хорошее решение было в yii 1.x.x екстеншин назывался MultiActiveRecord.
overals
(Evgenygor89)
June 22, 2016, 1:08pm
4
Может кому-то пригодится:
В моделе:
private static $dbname='db';
public function setDb($db){
self::$dbname = $db;
return $this;
}
public static function getDb()
{
return Yii::$app->get(self::$dbname);
}
И используем так:
$model = Yii::createObject(Users::className());
$raw = $model->setDb('db1')->findOne(['email'=>'test@test.com']);
Это всего лишь простой пример. От этого уже можно скакать куда угодно.
И как по мне это на много удобнее и проще, чем то что в гите я нашел.
samdark
(Alexander Makarov)
June 24, 2016, 7:56am
5
Да, нормально. Стоит сделать метод не статическим в 2.1? Если да, заводите issue.