Laravel Migration - 在表中添加检查约束

Abr*_*hin 10 php mysql migration database-migration laravel

我想在Laravel Migration中创建一个像这样的表 -

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

我所做的是 -

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

但我不能创造这个 -

 CHECK (Salary < 150000.00)
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉,如何CHECKLaravel Migration中实现这些约束?

Mic*_*ael 18

添加约束不是由蓝图类支持(至少Laravel 5.3),但它可以限制直接从您的迁移添加到您的表,通过使用数据库语句.

在您的迁移文件中

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);');
}
Run Code Online (Sandbox Code Playgroud)