2010-11-21 31 views
5

Tôi đang làm việc trên lược đồ cho ứng dụng Symfony của mình, và tôi cần đặt giá trị mặc định của hai trường boolean thành false. Tuy nhiên, với tất cả các cách tôi đã cố gắng để làm điều đó, khi sql được tạo ra, nó đi kèm với các từ khóa mặc định, nhưng không có giá trị mặc định sau khi nó.Symfony + Doctrine: Đúng cú pháp YAML cho giá trị mặc định của trường boolean

nỗ lực cuối cùng của tôi là:

negotiable: 
    type: bool 
    default: "false" 
complete: 
    type: bool 
    default: "false" 

nhưng tôi cũng đã cố gắng default: false, default: 'false', default: 0 từ sai chỉ là một bí danh cho 0 trong MySQL, và default: '0'

Không Query:

CREATE TABLE dormcode_project (id BIGINT AUTO_INCREMENT, client_id BIGINT, title VARCHAR(255), briefdesc LONGTEXT, spec LONGTEXT, coder_id BIGINT, paytype VARCHAR(30), negotiable bool DEFAULT , complete bool DEFAULT , created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX coder_id_idx (coder_id), INDEX client_id_idx (client_id), PRIMARY KEY(id)) ENGINE = INNODB 

Thông báo negotiable bool DEFAULT , complete bool DEFAULT ,

Tệp tôi đang phát là tệp /config/doctrine/schema.yml. Tôi là người mới với symfony/doctrine. Tôi nghĩ rằng đây là một trong những quyền, nhưng tôi đoán tôi có thể sai. Tôi làm symfony cc giữa mỗi lần thử chèn sql để đảm bảo rằng nó không lưu vào bộ nhớ cache lược đồ. Nhưng nó gần như có vẻ như nó không sử dụng tập tin tôi đã thay đổi ...

+0

Hãy thử (một dòng): thương lượng: {type: boolean, mặc định: false} –

+0

Tôi đã thử điều đó, nhưng dường như không có bất kỳ sự khác biệt nào. Chính xác, sai, sql vẫn được nhổ ra:/ –

Trả lời

7

Boolean là một từ đồng nghĩa cho TINYINT. Sử dụng integer(1) thay vào đó và đặt mặc định là 0/1.

Nguồn:

http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html

http://www.symfony-project.org/doctrine/1_2/en/04-Schema-Files

+2

Bạn nên sử dụng 'boolean' và để cho học thuyết chuyển đổi nó thành định dạng thích hợp nhất của công cụ DB cơ bản. – Maerlyn

+0

@Maerlyn: điểm công bằng, mặc dù người đăng tải muốn giải quyết vấn đề cho MySQL. – Tom

5

Thay vì sử dụng "bool", bạn nên sử dụng "boolean" trong lược đồ. Ngoài ra, mặc định: false sẽ hoạt động.

+0

Tôi đã đổi ti thành 'default: false' và thay đổi' bool' thành 'boolean' nhưng tôi nhận được kết quả tương tự –

+3

Hiển thị lược đồ cập nhật của chúng tôi, điều này phù hợp với tôi : 'quản trị viên: {type: boolean, default: false}'. – Maerlyn

8

Kể từ khi tôi đã không đủ điểm để thêm một bình luận, tôi sẽ thêm nó như là một câu trả lời cho những người tìm kiếm này thông qua Google và các loại như riêng tôi. Tôi biết đó là một câu hỏi cũ.

Trong Symfony 2.5 (ít nhất), cách đúng đắn về cách thiết lập một giá trị mặc định trong YAML như sau:

negotiable: 
    type: boolean 
    options: 
     default: 0 
complete: 
    type: boolean 
    options: 
     default: 0 
+0

Tại sao câu trả lời này ở phía dưới .. Đây là giải pháp đúng. Kudos bạn của tôi. – axelvnk

+0

Làm thế nào lạ, tôi đang sử dụng cùng một phiên bản (2.5) với cú pháp chính xác này, và nó vẫn từ chối làm việc: / – motagirl2

Các vấn đề liên quan