Doctrine2'de ENUM yerine ne kullanıyorsunuz? smallint? Varchar kullanmayı düşündüm ya da açıkça char tanımladım, ancak bu indeksler konusunda çok etkili olmayabilir veya yanlış mıyım?Doctrine2'de ENUM yerine ne kullanıyorsunuz?
cevap
Genellikle oldukça iyi çalışır ve bir IDE Numaralamalar diyeceğimiz ile çalışmak daha da kolay hale getirir
class MyEntity {
const STATUS_INACTIVE = 0;
const STATUS_ACTIVE = 1;
const STATUS_REFUSE = 2;
protected $status = self::STATUS_ACTIVE;
}
gibi, sınıf sabitleri eşleştirilen tamsayılar ile çalışır.
Ayrıca, use an enumerable type as described by the documentation da yapabilirsiniz, ancak bu, enum sütunu başına bir özel tür tanımlamanız gerektiği anlamına gelir. Bu gerçek bir yararı olmayan çok iş.
Ayrıca why you shouldn't really use enums'u da bilmek isteyebilirsiniz.
bir sorun - MyEntity dışındaki değerler ile uğraşırken, sabitleri yeniden kodlamak veya '0, 1, 2' kullanmak zorundasınız. i.e. '$ entity-> setStatus (STATUS_ACTIVE); // MyEntity ' – Dennis
@ Dennis'in dışında çalışmazsa, kullanım '$ entity-> setStatus (MyEntity :: STATUS_ACTIVE);' – Ocramius
Bu, MyEntity işlevini kullanan sınıfları belirli bir uygulamaya sıkı sıkıya bağlamaz mı? Bu sabitleri “MyEntityInterface” içinde tanımlamak daha iyi olur mu, “MyEntity” o zaman uygular? – Alex
Postgres symfony, bir şeklidir, doktrin ...
- postgres yeni tip enum tanımlayın (pgAdmin)
Varlık içindeENUM OLARAK TİP new_enum CREATE ('üzgün', 'tamam ', 'mutlu');
@ORM \ Sütun (isim = "name", type = "dizesini", columnDefinition = "new_enum", Nullable
=) gerçek
-
config.yml olarak
mapping_types:
new_enum: string
# Doctrine Configuration
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
mapping_types:
new_enum: string # <=======
- 1. Neden staticmethod yerine classmethod kullanıyorsunuz?
- 2. Ne zaman brace genişleme kullanıyorsunuz?
- 3. Wordpress LOOP'u yazı yerine sayfalarla mı kullanıyorsunuz?
- 4. Seçici yerine bir blok nesnesi mi kullanıyorsunuz?
- 5. Bu enum kalıbı ne çağrılırdı?
- 6. sscanf yerine ne kullanmalıyım?
- 7. eval() yerine ne kullanabilirim?
- 8. com.google.appengine.repackaged * yerine ne kullanmalıyım?
- 9. Oturum yerine ne kullanmalıyım?
- 10. Perl'de printf yerine ne kullanmalıyım?
- 11. Enum of Enum NULL
- 12. Python enum - Ben enum şu var
- 13. Enum
- 14. Ne zaman & neden @interface ClassName (Private) kullanıyorsunuz? - Objective-C
- 15. Eğer Apache ZooKeeper kullanıyorsanız, onu ne için kullanıyorsunuz?
- 16. C# ve WPF kullanarak çizgi grafikler çizmek için ne kullanıyorsunuz?
- 17. Kalıtım yerine şablonları ne zaman kullanmalıyım?
- 18. Str-utils işlevleri yerine ne kullanılır?
- 19. i flask_pewee get_fields yerine kullanımı var ne
- 20. Android'in HashMap yerine ArrayMap'i ne zaman kullanmalısınız?
- 21. RequestStack ne zaman getCurrentRequest yerine getMasterRequest kullanmalıyım?
- 22. C# "Enum" yöntemi ve "enum" parametresi
- 23. Java'yı nasıl kullanıyorsunuz?
- 24. Neden 32bit'den küçük tamsayıları kullanıyorsunuz?
- 25. document.styleSheets yerine dizin yerine?
- 26. dönüştürme enum bir enum Uyruk sahip piton
- 27. HasFlags hep bu enum tanımıdır enum
- 28. Enum değerlerini ayrı enum türlerinde yeniden kullanma
- 29. enum valueOf IllegalArgumentException: Hayır enum const sınıfı
- 30. Hazırlanmış deyimde mysql enum için Java enum
Sana (resmi Doktrin belgelerine alınan) Bu yemek kitabı gerek: http://www.doctrine-project.org/docs /orm/2.1/en/cookbook/mysql-enums.html Tam olarak sizin probleminiz ve 2 çözüm sunuyor. Sadece seninkini seç. – Nanocom