Не могу разобраться с префиксом таблиц в active record

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Не могу разобраться с префиксом таблиц в active record

Сообщение an.viktory@gmail.com »

Код: Выделить всё

 public static function tableName($prefix = 0)
    {

        if ($prefix == 0) {
            $session = Yii::$app->session;
            return $session->get('city_module') . "_sale";
        } else return $prefix . "_sale";


    }
в публичном методе

Код: Выделить всё

$sale_irr_dublicаte = Sale::find()
                            ->andWhere(['rooms_count' => $this->rooms_count])
                            ->tableName("test")
                            ->andWhere(['phone1' => $this->phone1])
                            ->andWhere(['address' => $this->address])
                            ->andWhere(['id_sources' => $this->id_sources])
                            ->one();


Теоретически надо чтобы если с актив рекорд взаимодействует пользователь то префикс берется от сессии а если работает cron то префикс выбирался бы исходя из метода (то есть я его мог передавать параметром )
tableName($prefix)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Не могу разобраться с префиксом таблиц в active record

Сообщение zelenin »

ну очевидно что вы не можете передавать параметры, т.к. сигнатура метода другая. значит, используйте в методе другой способ получения префикса.
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: Не могу разобраться с префиксом таблиц в active record

Сообщение an.viktory@gmail.com »

а в кроне сессии работают ?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Не могу разобраться с префиксом таблиц в active record

Сообщение zelenin »

an.viktory@gmail.com писал(а): 2017.03.23, 16:30 а в кроне сессии работают ?
это браузерное понятие.
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Не могу разобраться с префиксом таблиц в active record

Сообщение Alexum »

Можно конечно вот так попробовать:

В модели добавить статическое свойство под префикс и отдельный метод для его установки.

Код: Выделить всё

      private static $tablePrefix;

      public static function tableName()
      {
      	  if (self::$tablePrefix){
         	 return self::$tablePrefix . '_sale';
          } else {
          // Если префикс не устанавливался - стучимся за ним в сессию
           $session = Yii::$app->session;
            return $session->get('city_module') . "_sale";
          }
      }

      public static function setTablePrefix($prefix)
      {
          self::$tablePrefix = $prefix;
      }
Перед работой с этой моделью для крона вызываем Model::setTablePrefix($prefix);

Но обычно с префиксами в подключениях к БД работают через параметр tablePrefix.
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: Не могу разобраться с префиксом таблиц в active record

Сообщение an.viktory@gmail.com »

Спасибо. Работает! Им меня вполне устраивает данный метод! )
Ответить