Я довольно новичок в Yii, я работаю в течение 3 недель с Yii а также Yii очень помог мне Мое приложение работает нормально, пока мои коллеги не должны внести некоторые изменения в базу данных. Они удалили таблицу с именем STORE_PROCESSOR
и создать 2 новые таблицы с именем BIG_STORE_PROCESSOR
а также SMALL_STORE_PROCESSOR
, Они также добавляют новый столбец в таблицу.
Проблема в том, что когда я пытаюсь использовать Gii для создания модели для этих новых таблиц, Gii говорит, что эти таблицы не существуют в базе данных. Гий знает STORE_PROCESSOR
таблица еще существует в базе данных. CActiveRecord
также не знает о новом столбце, который был добавлен в таблицу.
Мы используем базу данных Oracle 10g XE и Yii 1.1.14.
Вот мой config/main.php
<?php
// uncomment the following to define a path alias
// Yii::setPathOfAlias('local','path/to/local-folder');
// This is the main Web application configuration. Any writable
// CWebApplication properties can be configured here.
return array(
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
'name'=>'Portal Online Store',
'language'=>'en',
'theme'=>'default',
// preloading 'log' component
'preload'=>array('log'),
// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
),
'modules'=>array(
// uncomment the following to enable the Gii tool
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'bolu',
// If removed, Gii defaults to localhost only. Edit carefully to taste.
'ipFilters'=>array('127.0.0.1','::1'),
),
),
// application components
'components'=>array(
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
),
// uncomment the following to enable URLs in path-format
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
// uncomment the following to use a MySQL database
'db'=>array(
'connectionString'=>'oci:dbname=152.116.31.148:1521/XE;charset=UTF8',
//'emulatePrepare' => true,
'username' => 'xxxxxxxxx',
'password' => '******',
//'charset' => 'utf8',
),'errorHandler'=>array(
// use 'site/error' action to display errors
'errorAction'=>'site/error',
),
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'error, warning',
),
// uncomment the following to show log messages on web pages
/*
array(
'class'=>'CWebLogRoute',
),
*/
),
),
),
// application-level parameters that can be accessed
// using Yii::app()->params['paramName']
'params'=>array(
// this is used in contact page
'adminEmail'=>'[email protected]',
'timeout'=>'900',
'timezone'=>'Asia/Jakarta'
),
);
вам нужно обновить схему БД, запустите следующий код, чтобы он был удален (создайте контроллер с действием, содержащим следующий код …)
Публичное действие refreshSchema () { // Загружаем все таблицы приложения в схему Yii :: приложение () -> db-> схе-> getTables (); // очищаем кеш всех загруженных таблиц Yii :: приложение () -> db-> схе-> Refresh (); }
Другой простой способ — перейти в каталог runtime / cache и стереть все файлы * .bin, чтобы создать новую схему кеша.
Последний способ — обновить кеш определенной таблицы.
Yii :: app () -> db-> schema-> getTable ('tablename', true);
Проблема не в Yii. Мы новички в Yii, а также в Oracle Database. Вы должны обновить таблицы с именем WWW_TAB_COLUMNS
, WWW_TAB_CONS
, WWW_TABLES
в SQL developer (Oracle DB)
Сразу ты меняешь таблицы. Если нет, Yii
не будет знать никаких изменений в базе данных. WWW_TAB_COLUMNS
содержит информацию обо всех столбцах, которые существуют в вашей базе данных. Затем, WWW_TAB_CONS
содержит информацию обо всех ограничениях, которые существуют в вашей базе данных. Прошлой, WWW_TABLES
содержит информацию обо всех таблицах, которые существуют в вашей базе данных. Похоже, что веб-приложение должно видеть эти таблицы, прежде чем выполнять операции CRUD.