您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
7-4 gii工具之数据模型配置介绍
发布时间:2023-05-13 20:13:08编辑:雪饮阅读()
-
Generate Labels from DB Comments与overwrite
接续上篇,之前不是说模型生成器生成出来的模型里面attributeLabels中的对应字段并没有读取到该字段在数据表中的注释值。其实这是因为我们使用模型生成器界面中默认没有勾选Generate Labels from DB Comments导致,只有勾选了Generate Labels from DB Comments这个才能实现attributeLabels中的字段字段配置值自动拿到对应在数据表中的注释值。
另外需要说明的时,如果我们频繁生成同一个模型,因为可能你有时候没有考虑周全,需要不断的修改完善,那么由于已经产生了一个模型,那么产生第二个模型时候一般的模型名称肯定是不能相同的,特别是不允许存在相同的文件名。那么实际上就是在模型生成器后面(好像是第三步,按照我们之前生成的流程好像是第三个界面时候)对于当前模型如果已存在(可能步存在也会有这个,我没有研究的太多细节)后面会有一个overwrite覆盖的勾选,勾选了则就不用每次重新起模型名称或者说是文件名称吧(不带后缀的文件名称吧)。
Use Table Prefix
当你的数据表有表前缀时候其实我个人感觉模型生成器的操作应该还是和之前的操作一样。只不过这里建议的就是说应该在如D:\phpstudy_pro\WWW\www.xyyii.com\basic\config\db.php
中新增配置如
'tablePrefix'=>'tbl_'
当然这个配置我觉得是可加可不加吧。我这里个人发现接下来的操作与这个好像没有关系。
那么基于用表前缀的数据表,我们模型生成器生成时要填写的Table Name就直接填写完整表名即可如wp_test
然后勾选Use Table Prefix
最后生成出来的模型如:
<?php
namespace app\models;
use Yii;
/**
* This is the model class for table "wp_test".
*
* @property integer $id
* @property string $title
*/
class WpTest extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'wp_test';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['title'], 'string', 'max' => 50]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'title' => '标题',
];
}
}
我感觉和之前好像差不多,但是老师那里好像是模型的tableName方法中返回的是wp_test还挺正常的,但是老师那里返回如{{%test2}},或许有环境差异吧,老师的是php5.4,我的是php5.5,
但是我这里使用这个新模型测试了save是可以成功的。
rules=》required
模型里面的rules中的字段对应的规则条件required是怎样自动根据模型生成器生成的呢?
上上篇就有这个疑问,现在才摸索出来。
我这里发现好像是如果说这个字段是char类型要勾选“不是null”,并且默认值不要设置。好像是这样的(但我这里后来发现这个字段好像又有默认值EMPTY STRING。。。(我这里是以navicat操作的情况,当然,可能与这个关系不大))。其它相关的还没有仔细研究。
关键字词:模型,生成器
下一篇:7-5 gii工具之控制器生成器