migration的php文件中的up方法中可用的字段设置的函数在哪里找? [ 2.0 版本 ]
如'username' => $this->string()->notNull()->unique()
中的string()
,notNull()
,和unique()
。
我在文档的哪里查找还有其他的哪些选项可以用?
在user范例中我看到了primaryKey()
,可是并不知道它是不是auto_increment
的,我查到了手册中的primaryKey()
方法,但却没有说明。
而其他的string()
,notNull()
,和unique()
等方法,则查不到说明。不知道除了范例中的这些方法之外,还有什么方法去设置字段?
共 6 个回答
-
johnny1991 回答于 2018-04-16 09:55 举报
我一般是直接sql在里面跑的
public function up() { $content = 'ALTER TABLE `media_weixin` ADD COLUMN `disabled_uuid` VARCHAR(45); ALTER TABLE `media_weixin` ADD COLUMN `disabled_name` VARCHAR(45); ALTER TABLE `media_weixin` ADD COLUMN `disabled_name_en` VARCHAR(45); ALTER TABLE `media_weibo` ADD COLUMN `disabled_uuid` VARCHAR(45); ALTER TABLE `media_weibo` ADD COLUMN `disabled_name` VARCHAR(45); ALTER TABLE `media_weibo` ADD COLUMN `disabled_name_en` VARCHAR(45);'; Yii::$app->db->createCommand($content)->execute(); }
-
integer()
整形,smallIntege()
短整形,defaultValue()
默认值,text()
等等
你可以参考Database Migration https://www.yiiframework.com/doc/guide/2.0/en/db-migrations -
public function primaryKey($length = null) public function bigPrimaryKey($length = null) public function char($length = null) public function string($length = null) public function text() public function tinyInteger($length = null) public function smallInteger($length = null) public function integer($length = null) public function bigInteger($length = null) public function float($precision = null) public function double($precision = null) public function decimal($precision = null, $scale = null) public function dateTime($precision = null) public function timestamp($precision = null) public function time($precision = null) public function date() public function binary($length = null) public function boolean() public function money($precision = null, $scale = null) public function json()
就是上面这些,拿去用吧
-
根据代码:
public function primaryKey($length = null) { return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_PK, $length); }
可知在primaryKey()中传递的是TYPE_PK,是不是auto_increment看看yii2对TYPE_PK的处理就知道了:
mysql:
'int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY'
mssql:
'int IDENTITY PRIMARY KEY',
oci:
'NUMBER(10) NOT NULL PRIMARY KEY',
pgsql:
'serial NOT NULL PRIMARY KEY',
sqlite:
'integer PRIMARY KEY AUTOINCREMENT NOT NULL',
-
哦对了,如果设置了unsigned():
'id' => $this->primaryKey()->unsigned(),
对应的处理也会改变,比如myql的处理会变为:
'int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY'
另外在使用bigPrimaryKey()时,有无unsigned()的处理分别是(以mysql为例):
'bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY', 'bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY',
-
peyo
注册时间:2017-08-16
最后登录:2018-04-16
在线时长:1小时23分
最后登录:2018-04-16
在线时长:1小时23分
- 粉丝0
- 金钱15
- 威望0
- 积分25