Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вапрос к спецам Yii

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
246978
Отправлено: 22 Апреля, 2013 - 10:12:35
Post Id



Посетитель


Покинул форум
Сообщений всего: 273
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


Ребята скажите, вот у меня есть модель, и есть три одинаковые таблицы одинаковые структуры но разные имена, скажите как можно подменить имя таблицы в модели?
 
 Top
246978
Отправлено: 22 Апреля, 2013 - 13:03:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 273
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


Всем спасибо найден ответ. если кому нужно
PHP:
скопировать код в буфер обмена
  1.  
  2. class CCKModel extends CActiveRecord
  3. {
  4.     private static $_tableName;
  5.  
  6.     public static function instance($tableName)
  7.     {
  8.         self::$_tableName=$tableName;
  9.         return parent::model(__CLASS__);
  10.     }
  11.  
  12.     public function tableName()
  13.     {
  14.         return self::$_tableName;
  15.     }
  16. }
  17.  
  18.  
 
 Top
esterio
Отправлено: 22 Апреля, 2013 - 13:55:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




246978
Ошыбочка
PHP:
скопировать код в буфер обмена
  1.  class CCKModel extends CActiveRecord
  2. {
  3. private static $_tableName;
  4.  
  5.     public function instance($tableName)
  6.     {
  7.         $this->_tableName=$tableName;
  8.         return parent::model(__CLASS__);
  9.     }
  10.  
  11.     public function tableName()
  12.     {
  13.         return $this->_tableName;
  14.     }
  15. }


при наследовании, будете иметь значение предка

(Отредактировано автором: 22 Апреля, 2013 - 13:56:34)

 
 Top
246978
Отправлено: 22 Апреля, 2013 - 14:35:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 273
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


Вот так
PHP:
скопировать код в буфер обмена
  1. $models=CCKModel::instance('any_table_name')->findAll();
 
 Top
esterio
Отправлено: 22 Апреля, 2013 - 14:44:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




PHP:
скопировать код в буфер обмена
  1. class MyModel1 extends CCKModel
  2. {
  3.         // ...
  4. }
  5.  
  6. class MyModel2 extends CCKModel
  7. {
  8.         // ...
  9. }
  10.  
  11. $models = MyModel1::instance('any_table_name1')->findAll();
  12. var_dump($models);
  13. $models = MyModel2::instance('any_table_name2')->findAll();
  14. var_dump($models);


Работать будет но криво. Вообще то делаеться с помощю перезаписи метода tableName
, а там уже решается какую таблицу взять
 
 Top
246978
Отправлено: 22 Апреля, 2013 - 15:57:01
Post Id



Посетитель


Покинул форум
Сообщений всего: 273
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


Пример, есть?! Так как я уже кучу вариантов пробовал, и все хорошо до тех пока родители не инициализируются, я углубился в CAtiveRecord. Если есть варианты буду рад воспользоваться, но пока именно это.
 
 Top
esterio
Отправлено: 22 Апреля, 2013 - 16:02:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Ну как пример при дебаге

PHP:
скопировать код в буфер обмена
  1. define('YII_DEBUG', true);
  2.  
  3. class TestModel extends CActiveRecord
  4. {
  5.         public function tableName()
  6.         {
  7.                 return YII_DEBUG ? 'table_name_debug' : 'table_name';
  8.         }
  9. }

Можно брать с конфига, или еще какое-нить условие
 
 Top
246978
Отправлено: 23 Апреля, 2013 - 08:50:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 273
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


Имя формируется динамически, я тоже думал, но нет нельзя. нужно так что бы имя передавалось при в
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB