Yii 生成没有 Gii 的模型

Yii generate model without Gii

我需要在不使用 Gii 的情况下生成模型文件。 Yii 有什么命令吗?

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

不要以为有命令。您可以自己创建模型或命令。其他选择是通过 curl 向 Gii 发出请求。

可能已正式弃用,您可以使用 Yii Command Line Tools

生成代码

我已经用 Yii 1.1.17 测试过了。

首先您需要在 protected/commands 上创建一个新文件,例如 NewmodelCommand.php to create a new yii command. We need to avoid to use shell interactive tool and call command directly from our code in controllers, models, etc. To get it, we inherit Yii core class ModelCommand。这 class 最初是强制人们在交互式 shell 上打字。

<?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 作为第一个参数。命令将使用与数据库相同的模型名称 table 名称:

./yiic newmodel MyNewModel

如果您有不同的模型和数据库名称:

./yiic newmodel MyNewModel tbl_new_model

如果您在使用 yiic、locating/connecting 您的数据库等方面遇到问题,请确保在 protected/config/console.php and 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" );