2018-04-16 09:06:01 116次浏览 6条回答 0 悬赏 10 金钱

'username' => $this->string()->notNull()->unique()
中的string()notNull(),和unique()
我在文档的哪里查找还有其他的哪些选项可以用?
在user范例中我看到了primaryKey(),可是并不知道它是不是auto_increment的,我查到了手册中的primaryKey()方法,但却没有说明。
而其他的string()notNull(),和unique()等方法,则查不到说明。不知道除了范例中的这些方法之外,还有什么方法去设置字段?

  • 回答于 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();
    }
    
  • 回答于 2018-04-16 13:14 举报

    integer()整形,smallIntege()短整形,defaultValue()默认值,text() 等等
    你可以参考Database Migration https://www.yiiframework.com/doc/guide/2.0/en/db-migrations

  • 回答于 2018-04-16 19:07 举报
    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()
    
    

    就是上面这些,拿去用吧

  • 回答于 2018-04-16 19:45 举报

    根据代码:

    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',
    
  • 回答于 2018-04-16 19:57 举报

    哦对了,如果设置了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',
    
  • 回答于 2018-04-16 20:13 举报

    还有一些其它字段的设置,意思看字面就知道了就不用打出来了吧,罗列如下:

    notNull()
    null()
    unique()
    check($check)
    defaultValue($default)
    comment($comment)
    unsigned()
    after($after)
    first()
    defaultExpression($default)
    append($sql)
    
您需要登录后才可以回答。登录 | 立即注册
peyo
试用期

peyo

注册时间:2017-08-16
最后登录:2018-04-16
在线时长:1小时23分

热门问题