DbHelp.ru
Маленький Yii блог
Комментарии
Гость: free casino slot games free slots casino games | zone online casino games | play free vegas casino g...
Гость: casino games free online free casino games online | gsn casino | old vegas slots free casino games
Гость: zone online casino pch slots | online gambling | lady luck online casino
Гость: doubledown casino high 5 casino | slots lounge | tropicana online casino free slots 777
Гость: caesars slots free online casino | no deposit casino | online casinos online casinos



Сервер 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. Разработчики в очередной раз не перестают нас радовать новой версией замечательного фреймворка. Я был очень рад когда после выходных, выйдя ... "Версия 1.0.7"

  2. Как я вам и обещал — сегодня состоялся релиз новой версии Yii. Это совершенно новая ветка развития любимого фреймворка и ... "Yii PHP framework 1.1 alpha is released"

  3. Для начала вам потребуется скачать последний релиз FCKeditor. Разархивируйте скачанный файл и поместите его в папку fckeditor (которую предварительно ... "Как подключить FCKeditor"

[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/ - 코리아카지노 /

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


Код:
Имя: