2016-12-13 9 views
0

Мне нужно сгенерировать файл модели без использования Gii. Есть ли какая-нибудь команда Yii?Yii генерировать модель без Gii

$table = "myTable"; 
Yii::app()->generateModel($table); // ? 
+0

Что Yii версии вы используете? Yii 1.x? –

+0

Yii Framework 1.1.17 – Zombyii

+0

См. Мой ответ. Надеюсь, поможет –

ответ

1

Может быть официально устаревшим, вы можете генерировать код с Yii Command Line Tools

Я тестировал его с Yii 1.1.17.

Сначала вам нужно создать новый файл на protected/commands, названный, например, NewmodelCommand.phpto create a new yii command. Нам нужно избегать использования интерактивного инструмента оболочки и команды вызова непосредственно из нашего кода в контроллерах, моделях и т. Д. Чтобы получить это, мы наследуем основной класс 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, размещение/подключения БД и т.д., сделать обязательно настройте свою консольную среду на protected/config/console.php и check all official docs about Yii console applications.

Наконец, в вашем коде, вы можете использовать вашу команду, как вы хотите:

$path = '/full/path/to/protected'; 
$new_model_name = 'MyNewModel'; 
shell_exec($path . "/./yiic newmodel $new_model_name"); 
2

Не думаю, что есть команда. Вы можете создать модель или команду самостоятельно. Другим вариантом было бы сделать запросы на Gii через curl.

 Смежные вопросы

  • Нет связанных вопросов^_^