2015-02-16 15 views
5

Tôi đang sử dụng các phương pháp sau đây để tạo ra một cột cơ sở dữ liệu của loại ENUM trong xây dựng giản đồ:Thêm giá trị mặc định cho trường loại enum trong xây dựng giản đồ

$table->enum('status', array('new', 'active', 'disabled')); 

Tôi muốn thiết lập giá trị của nó mặc định để active .
tôi đã cố gắng để làm điều này:

$table->enum('status', array('new', 'active', 'disabled'))->default('active'); 

Nhưng như bạn có thể đoán nó không thiết lập nó là giá trị mặc định. Tôi đang sử dụng cơ sở dữ liệu MySQL nếu điều đó quan trọng.

Trả lời

11

Từ the MySQL manual:

Nếu một cột ENUM được khai báo cho phép NULL, giá trị NULL là một giá trị pháp lý đối với các cột, và các giá trị mặc định là NULL. Nếu một cột ENUM được khai báo NOT NULL, giá trị mặc định của nó là phần tử đầu tiên của danh sách các giá trị được phép.

Tôi giả định này có nghĩa là bạn nên thiết lập 'active' như giá trị đầu tiên, loại bỏ các default() cuộc gọi, và có thể thiết lập NULL permittance bằng tay.

+0

Cảm ơn, nên đã kiểm tra hướng dẫn đầu tiên, nghĩ đó là một điều Laravel. Sẽ chấp nhận ngay khi giới hạn thời gian cho phép tôi. – Peter

+0

Chúc mừng, vui vì nó đã giúp. :) –

+0

Bạn có nghĩa là loại bỏ quyền 'NULL', isntead của thiết lập nó, phải không? – Adam

1

Tôi chạy vào một vấn đề tương tự, đó là những gì làm việc cho tôi:

$table->enum('status', array('active', 'new', 'disabled')); 

Đặt giá trị mặc định là yếu tố đầu tiên trong mảng. active hiện là giá trị mặc định.

2

sử dụng này:

$table->enum('status',['new', 'active', 'disabled'])->default('active'); 
Các vấn đề liên quan