ฉันกำลังเขียนการย้ายข้อมูลเพื่อสร้างคอลัมน์บางคอลัมน์ในตารางnullable
ในขณะนี้ สำหรับฟังก์ชั่น down ฉันต้องการสร้างคอลัมน์เหล่านั้นnot nullable
อีกครั้งแน่นอน ฉันดูเอกสารตัวสร้างสคีมาแต่ไม่เห็นวิธีดำเนินการนี้
ความช่วยเหลือใด ๆ จะได้รับการชื่นชม
ฉันกำลังเขียนการย้ายข้อมูลเพื่อสร้างคอลัมน์บางคอลัมน์ในตารางnullable
ในขณะนี้ สำหรับฟังก์ชั่น down ฉันต้องการสร้างคอลัมน์เหล่านั้นnot nullable
อีกครั้งแน่นอน ฉันดูเอกสารตัวสร้างสคีมาแต่ไม่เห็นวิธีดำเนินการนี้
ความช่วยเหลือใด ๆ จะได้รับการชื่นชม
คำตอบ:
ก่อนหน้า Laravel 5 ไม่มีวิธีดั้งเดิมของ Laravel ในการเปลี่ยนคอลัมน์ตารางที่มีอยู่โดยใช้ตัวสร้างสคีมา คุณต้องใช้การสืบค้นข้อมูลดิบสำหรับสิ่งนี้
อย่างไรก็ตามใน Laravel 5 คุณสามารถใช้:
$table->...->nullable(false)->change();
$table->string('colmn', 255)->nullable()->change();
แต่การย้อนกลับดูเหมือนจะไม่ทำงาน ( $table->string('colmn', 255)->change();
) ดังนั้นคุณยังคงต้องใช้แบบสอบถามฐานข้อมูลดิบสำหรับสิ่งนี้
nullable(false)
ไม่ได้ผลสำหรับฉันใน Laravel 5.3 :(
ใน Laravel 5 เป็นไปได้ที่จะย้อนกลับสิ่งนี้ - เพียงแค่ส่งเท็จเป็นอาร์กิวเมนต์ไปยัง nullable ()
เช่น
$table -> string('foo') -> nullable(false) -> change();
ก่อนอื่นให้รันสิ่งนี้:
composer require doctrine/dbal
จากนั้นสร้างการย้ายข้อมูลที่จะเปลี่ยนตารางดังนี้:
php artisan make:migration fix_whatever_table_name_here
public function up()
{
Schema::table('table_name', function (Blueprint $table) {
$table->type('column')->nullable(false)->change();
});
}
public function down()
{
Schema::table('table_name', function ($table) {
$table->dropColumn('column');
});
}
คุณสามารถประกาศคอลัมน์อีกครั้งโดยไม่ต้อง -> nullable () และใช้ -> เปลี่ยน
public function up()
{
Schema::table('table_name', function (Blueprint $table) {
$table->type('column')->change();
});
}
public function down()
{
Schema::table('table_name', function ($table) {
$table->type('column')->nullable()->change();
});
}