DbHelp.ru
Маленький Yii блог
Комментарии
Гость: gsn casino free casino games sun moon | zone online casino | play free vegas casino games free slots...
Гость: zone online casino online casino slots | online casino | gsn casino slots online casino slots
nsgPoend: generic viagra viagra buy viagra cost online viagra
Гость: casino slots jackpot magic slots | free casino games slot machines | casino game parx online casino
Гость: gsn casino casino online slots | free online casino | online casino games hollywood casino



Сервер Ultima Online - Forest Wars (от создателя данного блога)

Используем префиксы для таблиц

Рубрика: Мелкие заметки на тему Yii

Оцените эту статью:

Рейтинг: 0.00 (0)
18 нояб.. 2009
Опубликовать в Twitter Написать в Facebook Опубликовать в своем блоге livejournal.com

Очень часто мне приходится заставлять работать проекты с практически идентичной структурой базы данных. Когда хостинг накладывает на меня ограничение что всё это должно быть в одной БД — возникает много проблем. В принципе есть только два варианта: использовать префиксы для таблиц и научить фреймворк с ними работать, либо постоянно править файлы модели и менять имена таблиц в ручную. 

---

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

Если мы используем в проекте модели типа ActiveRecord, мы соответственно наследуем свой класс от CActiveRecord:

class MyModel extends CActiveRecord {   … } 

В моем случае мы создадим главный класс для всех моделей MyActiveRecord (с наследованием от CActiveRecord), а все наши модели — будем наследовать именно от него.

В самом классе MyActiveRecord мы переопределим метод tableName который позволит нам использовать префиксы. Смотрим:

class MyActiveRecord extends CActiveRecord
{
        public $prefix = 'tablePrefix_';
 
        public function tableName()
        {
                return $this->prefix . parent::tableName();
        }
}

Вот в принципе и все. Теперь все модели которые вы будите наследовать от MyActiveRecord — будут иметь префикс «tablePrefix_». Это означает что если в tableName у вас указанно «Users», то обращение будет происходить к таблице «tablePrefix_Users».

Вот как-то так :)



Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
Другие yii статьи:

  1. Один хороший человек Sam Dark (rmcreative.ru)  опубликовал интересное сравнение двух отличных фреймворков. В правом углу - наш любимый Yii ... "Yii vs CodeIgniter"

  2. Эта статья устарела т.к. была написана для yii версии 1.0.х; Если вы используете более новую версию - у вас могут ... "Валидация формы средствами Yii"

  3. Сегодня мы поговорим с вами о том как изменить генератор символов на капче. Часто мне стали приходить сообщения на почту ... "Как на Yii капче выводить цифры"

[adm] zolter

Было сказано: Среда, 18 Ноябрь 2009

Очень простая статья. Просто давно уже так делаю и решил дать рецепт тем кто еще не решился на такой шаг :)

[guest] hyzhak

Было сказано: Четверг, 19 Ноябрь 2009

В Yii 1.1 работа с префиксами уже учтена. для єтого в конфиге в компоненте db пишем:


tablePrefix => 'prefix_',


а в модели


public function tableName()
{
return '{{tablename_without_prefix}}';
}


http://www.yiiframework.com/doc/guide/database.dao#using-table-prefix

[adm] zolter

Было сказано: Четверг, 19 Ноябрь 2009

Ага, спасибо :)

Я именно про 1.0.10 и ниже говорил :)

[guest] RSol

Было сказано: Четверг, 19 Ноябрь 2009

А я делаю в конфиге параметр префикс, а потом делаю:

public function tableName(){
return Yii::app()->params['prefix].parent::tableName();
}

[adm] zolter

Было сказано: Четверг, 19 Ноябрь 2009

Да тож вариант :)

[guest] Гость

Было сказано: Пятница, 18 Декабрь 2009

Создал в папке protected\components файл MyActiveRecord.
В нем:


class MyActiveRecord extends CActiveRecord
{
public function tableName(){
return Yii::app()->params['tablePrefix'].parent::tableName();
}
}


в config/mian.php

'params'=>array(
'tablePrefix'=>'tbl_',
)


В модели:
class Page extends MyActiveRecord{...}

Не работает, ошибок не выдает, но и префикс не подставлен.

С Yii начал работать пару дней назад..

[guest] zolter

Было сказано: Суббота, 19 Декабрь 2009

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

А так в принципе в tableName вы можете сделать die(Yii::app()->params['tablePrefix']) и посмотреть видна ли ваша переменная префикса из конфига, в виджите

[guest] Гость

Было сказано: Суббота, 19 Декабрь 2009

Нет, не выводит)
За наводку спасибо, буду копать.

[guest] олег

Было сказано: Пятница, 26 Ноябрь 2010

спасибо, пригодилось

[guest] custory

Было сказано: Четверг, 08 Ноябрь 2018

https://custory.com/theking/ - 더킹카지노 /
https://custory.com/woori/ - 우리카지노 /
https://custory.com/first/ - 퍼스트카지노 /
https://custory.com/yes/ - 예스카지노 /

[guest] stylebet77

Было сказано: Четверг, 08 Ноябрь 2018

https://stylebet77.com/theking / - 더킹카지노 /
https://stylebet77.com/ - 우리카지노 /

[guest] como79

Было сказано: Четверг, 08 Ноябрь 2018

https://como79.com/ - 우리카지노 /
https://como79.com/theking/ - 더킹카지노 /
https://como79.com/yescasino/ - 예스카지노 /

[guest] dancesweb

Было сказано: Четверг, 08 Ноябрь 2018

https://dancesweb.com/woori/ - 우리카지노 /
https://dancesweb.com/theking/ - /더킹카지노 /
https://dancesweb.com/first/ - 퍼스트카지노 /

[guest] pauio

Было сказано: Четверг, 08 Ноябрь 2018

https://pauio.com/33ca/ - 33카지노 /
https://pauio.com/asn/ - 아시안카지노 /
https://pauio.com/basa/ - 바카라사이트 /
https://pauio.com/casa/ - 카지노사이트 /
https://pauio.com/kor/ - 코리아카지노 /

Оставить комментарий


Код:
Имя: