Encoderast
@Encoderast
frontend пытается что-то делать в backend

Yii2 -> работа 2 или 100 сайтов из одной директории?

Появилась нужна организовать работу нескольких сайтов из одной директории

В БД в каждую таблицу добавили идентификатор в виде домена, в контроллер вывод через
->where(['status' => '1','domain' => preg_replace("/^www./","",$_SERVER['HTTP_HOST'])])


В принципе задача выполняется, но...

...может есть возможность упростить задачу, может есть какая нибудь волшебная плюха, которую можно прописать в конфигах и не задавать условия для каждого контроллера?

Не шарю, извиняйте
  • Вопрос задан
  • 166 просмотров
Решения вопроса 1
Создайте scope:
class MyActiveQuery extends \yii\db\ActiveQuery
{
    public function init()
    {
        $modelClass = $this->modelClass;
        $tableName = $modelClass::tableName();
        $domainName = preg_replace("/^www./","",$_SERVER['HTTP_HOST']);
        $this->andWhere([$tableName.'.domain' => $domainName]);
        parent::init();
    }
}

Используйте его в своей модели:
class MyActiveRecord extends \yii\db\ActiveRecord
{
    public static function find()
    {
        return new MyActiveQuery(get_called_class());
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы