我想在Laravel迁移中创建这样一个表-

CREATE TABLE Payroll
(
 ID int PRIMARY KEY, 
 PositionID INT,
 Salary decimal(9,2) 
 CHECK (Salary < 150000.00)
);

我所做的是-

Schema::create('Payroll', function (Blueprint $table)
{
    $table->increments('id');
    $table->integer('PositionID ');
    $table->decimal('Salary',9,2);
    //$table->timestamps();
});

但我不能创造这个-

 CHECK (Salary < 150000.00)

有没有人能告诉我,这CHECK个约束是如何在Laravel Migration中实现的?

推荐答案

Adding constraints is not supported by the Blueprint class (at least as of Laravel 5.3), however it is possible to add constraints to your tables directly from your migrations, by using database statements.

在迁移文件中,

public function up ()
{
    Schema::create('payroll', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('position_id');
        $table->decimal('salary',9,2);
    });

    // Add the constraint
    DB::statement('ALTER TABLE payroll ADD CONSTRAINT chk_salary_amount CHECK (salary < 150000.00);');
}

Laravel相关问答推荐

@vite指令在使用laravel vite构建后导致错误

警告:构建Reaction App(VITE)后无法解码下载的字体警告

如何在Vite和Rollup中完全禁用分块?

Laravel 模型事件:delete() 不会从存储中删除文件

如何在 laravel 5.8 中显示自定义消息?

如何在 Laravel 中使用内存数据库的完整测试套件之前迁移和 seeder ?

Laravel中具有两个外键字段的数据库一对多

如何在 laravel 中使用 str_replace

在 laravel 查询构建器中使用多个 where 子句

查询构建器中的 Laravel 5 多重 Select ()

需要 Vagrant 环境或目标机器

路由模型绑定不起作用

如何在没有 Eloquent 的情况下创建 Laravel 模型?

如何在中间件 Laravel 中获取请求的控制器和操作的名称

Laravel 将参数从路由传递到过滤器

如何从不是控制器方法的方法发送响应?

Laravel 5 干预中的图像验证

如何从 Laravel 中的资源中获取图像?

使用 Queue::fake() 测试监听器

Distinct values with pluck