2017-01-11 12 views
1

我使用的Laravel 5.3,我想定义一个字段在表迁移可空以及无符号。由于两者都是索引修饰符,我可以在串联中使用它们吗?例如:Laravel - 无符号可空

$table->integer('some_field')->unsigned()->nullable(); 

如果在laravel文档或某处存在这些类型的修改,也请给出一些参考。

请注意,我想将up()函数中的字段定义为unsigned和nullable。我不想down()功能,如:

public function up() 
    { 
     Schema::create('ex', function (Blueprint $table) { 
      $table->integer('some_field')->unsigned(); 
     }); 
    } 
public function down() 
    { 
     DB::statement('ALTER TABLE ex MODIFY `some_field` integer NOT NULL;'); 
    } 

在此先感谢!

+1

你尝试了吗? –

+0

不,我现在不能,因为我无法创建测试env出于某种原因,所以我希望如果有人知道它肯定。 – Learner

回答

2

您可以。 Laravel允许大量的方法链接。每个列方法定义为返回相同的Blueprint对象,因此您可以轻松地调用其他方法。这意味着,你甚至可以这样做:

Schema::create('ex', function (Blueprint $table) { 
    $table->integer('some_field')->unsigned()->first()->default(10); 
}); 

而且一切都会好:)

欲了解更多信息,请参阅the documentation on database migrations(见“列修饰符”一节)。

+1

虽然它很奇怪。我知道我们可以一起使用**列类型**和**列修饰符**,但它很好地知道**索引修饰符**也可以连接在一起。感谢您的回答。 +1并被接受! – Learner

+0

不客气!乐意效劳! – shalvah

4

你可以做

Schema::create('ex', function (Blueprint $table) { 
     $table->integer('some_field')->unsigned()->nullable(); 
    }); 
+0

感谢您的帮助。 +1。 – Learner

0

虽然这个问题已经有了答案。我还选择了确认使用的接受答案:

$table->integer('some_field')->unsigned()->nullable(); 

是对的。

尽管我列出一个详细的方式做同样的:

$table->integer('some_field')->unsigned(); 
$table->integer('some_field')->nullable()->change(); 

参考:https://laravel.com/docs/5.3/migrations#modifying-columns

+1

正确。我认为'change'方法适用于当你已经运行旧的迁移并且你不想刷新它们的时候。 – shalvah

+0

确实是这样。主要用于'down()'函数,但它仍然是一种选择。 – Learner