首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Laravel Schema中的MySQL数据类型集的等价物是什么?

Laravel Schema中的MySQL数据类型集的等价物是什么?
EN

Stack Overflow用户
提问于 2014-06-18 22:48:00
回答 3查看 10.4K关注 0票数 10

Laravel Schema有一个用于ENUM的命令,等同于该表。什么集合等同于表格?

EN

回答 3

Stack Overflow用户

发布于 2014-10-15 21:22:37

罗曼·纳扎尔金的方法几乎可以完美地工作,但是有一个关于表前缀的小问题(这个方法没有考虑到这个问题),但是让这个建议适用于表前缀是很简单的:

代码语言:javascript
复制
$grammar = DB::connection()->withTablePrefix(new ExtendedMySqlGrammar());
// set new grammar class
DB::connection()->setSchemaGrammar($grammar);

// get custom schema object
$schema = DB::connection()->getSchemaBuilder();

// bind new blueprint class
$schema->blueprintResolver(function($table, $callback) {
    return new ExtendedBlueprint($table, $callback);
});

// then create tables 
$schema->create('table name', function(ExtendedBlueprint $table)
{
    $table->increments('id');
    $table->text('sentence');
    $table->string('author')->nullable();
    $table->string('source')->nullable();
    $table->set('difficulty', range(1, 10)); // use our new mysql type 
    $table->boolean('enabled')->default(true);
});
票数 4
EN

Stack Overflow用户

发布于 2020-05-20 23:50:32

当您需要创建自定义列而无需创建其他文件来描述扩展语法时,我的简单一次性解决方案。在这里,我将自定义类型rsvp_statuses添加到PostgresGrammar

代码语言:javascript
复制
    public function up()
    {
        DB::connection()->setSchemaGrammar(new class extends PostgresGrammar {
            protected function typeRsvp_statuses(\Illuminate\Support\Fluent $column)
            {
                return 'rsvp_statuses';
            }
        });

        Schema::create('mytable', function (Blueprint $table) {
            $table->bigIncrements('id');
            //...
            $table->addColumn('rsvp_statuses', 'status');
            $table->timestamps();
        });
    }
票数 1
EN

Stack Overflow用户

发布于 2018-06-08 08:51:12

扩展laravel数据库模式方法并不太难。就像罗曼写的那样,你也可以更新你的

vendor/laravel/framework/src/Illuminate/Database/Schema/Grammers/MysqlGrammer.php

代码语言:javascript
复制
/**
 * Create the column definition for an set type.
 *
 * @param  \Illuminate\Support\Fluent  $column
 * @return string
*/
protected function typeSet(Fluent $column){
    return "set('".implode("', '", $column->allowed)."')";
}

vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php

代码语言:javascript
复制
/**
     * Create a new set column on the table.
     *
     * @param  string  $column
     * @param  array   $allowed
     * @return \Illuminate\Support\Fluent
    */
    public function set($column, array $allowed){
        return $this->addColumn('set', $column, compact('allowed'));
    }

之后,按Ctrl + C终止您的服务器,然后输入php artisan serve以启动laravel。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24288633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档