Мне нужно создать файл модели без использования Gii. Есть ли какая-нибудь команда Yii?
$table = "myTable"; Yii::app()->generateModel($table); // ?
Возможно, официально устарел, вы можете сгенерировать код с помощью Yii Command Line Tools
Я тестировал его с помощью Yii 1.1.17.
Сначала вам нужно создать новый файл на protected/commands
называемый, например, NewmodelCommand.php
чтобы создать новую команду NewmodelCommand.php
. Нам нужно избегать использования интерактивного инструмента оболочки и команды вызова непосредственно из нашего кода в контроллерах, моделях и т. Д. Чтобы получить это, мы наследуем основной класс Yii ModelCommand
. Этот класс изначально заставляет человека печатать на интерактивной оболочке.
<?php Yii::import('system.cli.commands.shell.ModelCommand'); class NewmodelCommand extends ModelCommand { }
Вот и все. Вы можете протестировать команду из CLI в вашей операционной системе. В Linux откройте свой терминал и перейдите в каталог /protected/
и введите:
./yiic
Вы увидите что-то вроде этого:
... The following commands are available: - message - migrate - newmodel - shell - webapp ...
Поиграйте немного с этим. Введите снова:
./yiic newmodel
И вы увидите всю командную помощь и документацию.
Чтобы сгенерировать модель с помощью этой команды, вам нужно как минимум имя model_name
как первый параметр. Команда будет использовать имя той же модели, что и имя таблицы базы данных:
./yiic newmodel MyNewModel
Если у вас есть другая модель и имя базы данных:
./yiic newmodel MyNewModel tbl_new_model
Если у вас возникли проблемы с использованием yiic, найдите / подключите свой db и т. Д., Обязательно настройте свою консольную среду на protected / config / console.php и проверьте все официальные документы о консольных приложениях Yii .
Наконец, в вашем коде вы можете использовать свою команду, как хотите:
$path = '/full/path/to/protected'; $new_model_name = 'MyNewModel'; shell_exec( $path . "/./yiic newmodel $new_model_name" );
Не думайте, что есть команда. Вы можете создать модель или команду самостоятельно. Другим вариантом было бы сделать запросы на Gii через curl.