8.7. 创建一个或多个模型

./script/solar make-model Vendor_Model_TableName [--table=table_name] [--extends=Vendor_Model_ParentClass] [--connect=true|false]

8.7.1. 创建一个模型

./script/solar make-model Vendor_Model_TableName

上面这条命令使用默认的SQL数据库连接创建一个模型类,并且从类名中获取数据库表名。此命令将在数据库中查找table_name表;它会自动把首字母大写分隔的形式转换成下划线分隔的形式。并且它使用Vendor_Sql_Model类作为它的父类。

$ ./script/solar make-model Vendor_Model_TableName
Making model 'Vendor_Model_TableName'.
Will write to 'SYSTEM/include/'.
Using table 'table_name'.
Not using inheritance.
Making class directory ... done.
Writing model class ... done.
Writing record class ... done.
Writing collection class ... done.
Connecting to database for metadata ...connected.
Fetching table cols ... done.
Fetching index info ... done.
Writing metadata class ... done.
Creating locale directory ... done.
Saving locale file for en_US ... done.
Done.
$

上面的命令做了什么?

  • 该命令创建3个类及它们对应的目录:Vendor_Model_TableName(模型映射类),Vendor_Model_TableName_Record(模型记录类),Vendor_Model_TableName_Collection(模型记录集类)。

  • 然后,该命令连接数据库去获取表的字段和索引信息。获取的元数据将会被存储在Vendor_Model_TableName_Metadata类中。如果你再次调用make-model命令,这个元数据会被重写,所以不要去手动修改它。(你可以通过向命令传递--connect=false,使它不连接数据库。)

  • 最后,使用上面获得的元数据,该命令为模型创建初基本的本地文件。

8.7.2. 指定表名

./script/solar make-model Vendor_Model_OtherName --table=table_name

上面这条命令使用默认的SQL数据库连接创建一个模型类,并且显示指定要使用的数据库表名。

8.7.3. 指定父类

./script/solar make-model Vendor_Model_TableName --extends=Vendor_Model_ParentClass

上面这条命令使用默认的SQL数据库连接创建一个模型类,并且隐式指定要使用的数据库表名。

然而,它使用Vendor_Model_ParentClass作为它的父类,而不是默认的Vendor_Sql_Model类。默认情况下,这意味着我们正在创建的模型使用的表名和Vendor_Model_ParentClass相同,并且它会激活单表继承功能。

8.7.4. 一次创建多个模型

./script/solar make-model Vendor_Model_*

上命这条命令后面的通配符_*含义是:该命令使用默认数据库连接,为数据库中的每张表创建一个模型类。表名会被用来当作模型类的后缀。例如:如果数据库中有表foozim_gir,此命令将会创建Vendor_Model_FooVendor_Model_ZimGir模型类。