Doctrine, nella versione 2.1 ha eliminato il supporto alla parola chiave DEFAULT  per impostare un valore predefinito ad un campo.

Come descritto nelle FAQ di Doctrine, per settare un valore di default, basta semplicemente definire una variabile di classe con il valore predefinito.

Seguendo la procedura nelle FAQ ed effettuando la build dell’entità, il campo specifico viene impostato ad accettare valori NULL ma non ha un valore di default lato MySql: viene semplicemente mappato da una proprietà di classe PHP con valore preassegnato.

Ma cosa succede se si dispone di una base di dati accessibile da più piattaforme (alcune delle quali non utilizzano Doctrine)? Potrebbe avere luogo un’inconsistenza di dati.

La piattaforma che utilizza Doctrine, vede sempre il campo settato ma quando una seconda piattaforma tenta di interagire con la base di dati, potrebbe inserire un valore NULL nel campo con conseguenze imprevedibili.

Tutto ciò perché il vincolo viene gestito a livello applicativo.

Per definire una colonna con la sintassi di MySql, Doctrine mette a disposizione la chiave ColumnDefinition:

1
2
3
4
/**
* @ORM\Column(columnDefinition="BOOLEAN NOT NULL DEFAULT false")
*/

protected $published = false;

Nel caso specifico, chiediamo a Doctrine di impostare la colonna published come boolean, che non accetti valori NULL e che abbia false come valore di default.

Così facendo, oltre alla mappatura applicativa di Doctrine, blindiamo la costruzione delle tabelle MySql.

Abbiamo gettato un’ancora di salvataggio alle basi di dati accessibili da più piattaforme applicative.

Ovviamente, l’uso di columnDefinition è più ampio e può essere utilizzato per impostare le diverse caratteristiche del campo non supportate da Doctrine.

 

www.it4test.com
100-101
200-120
350-001
350-018
640-460
640-461
70-177
70-178
70-243
70-246
70-270
70-410
70-247
70-460
70-486
70-483
70-413
70-688
70-415
70-337
300-320
SY0-401
000-017
000-080
000-089
000-104
000-105
000-106
642-416
642-584
642-618
644-066
70-243-study-material
70-246-practice-test
70-247-braindump
70-331-course
70-332-video-training
70-333-study-material
70-334-questions
70-336-tests
70-337-certification
70-341-tutorials
70-342-certification
70-346-pdf
350-080
646-272
300-070
642-871
352-011
210-060
300-135
350-018
640-692
350-030
810-403
210-260
642-832
350-030
640-911
400-051
70-534
MB6-703
70-336
C4090-958
000-622
hp2-h33
1z0-821
hp0-y50
hat-680
e20-593
hp2-w100
98-367
ahm-540
ahm-530
70-692
70-297
100-101
200-101
200-120
350-001
350-018
117-101
117-102
117-201
117-202