Διαμόρφωση βάσης δεδομένων
Επισκόπηση των επιλογών διαμόρφωσης για το Nette Database.
Αν δεν χρησιμοποιείτε ολόκληρο το framework, αλλά μόνο αυτή τη βιβλιοθήκη, διαβάστε πώς να φορτώσετε τη διαμόρφωση.
Μία σύνδεση
Διαμόρφωση μιας σύνδεσης βάσης δεδομένων:
database:
# DSN, το μοναδικό υποχρεωτικό κλειδί
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Δημιουργεί τις υπηρεσίες Nette\Database\Connection
και
Nette\Database\Explorer
, τις οποίες συνήθως περνάμε με autowiring, ή με αναφορά στο όνομά τους.
Περαιτέρω ρυθμίσεις:
database:
# εμφάνιση του πίνακα database στο Tracy Bar;
debugger: ... # (bool) προεπιλογή είναι true
# εμφάνιση EXPLAIN των queries στο Tracy Bar;
explain: ... # (bool) προεπιλογή είναι true
# ενεργοποίηση autowiring για αυτή τη σύνδεση;
autowired: ... # (bool) προεπιλογή είναι true στην πρώτη σύνδεση
# συμβάσεις πινάκων: discovered, static ή όνομα κλάσης
conventions: discovered # (string) προεπιλογή είναι 'discovered'
options:
# σύνδεση στη βάση δεδομένων μόνο όταν χρειάζεται;
lazy: ... # (bool) προεπιλογή είναι false
# PHP κλάση του database driver
driverClass: # (string)
# μόνο MySQL: ορίζει το sql_mode
sqlmode: # (string)
# μόνο MySQL: ορίζει το SET NAMES
charset: # (string) προεπιλογή είναι 'utf8mb4'
# μόνο MySQL: μετατρέπει το TINYINT(1) σε bool
convertBoolean: # (bool) προεπιλογή είναι false
# επιστρέφει στήλες με ημερομηνία ως immutable αντικείμενα (από την έκδοση 3.2.1)
newDateTime: # (bool) προεπιλογή είναι false
# μόνο Oracle και SQLite: μορφή για αποθήκευση ημερομηνίας
formatDateTime: # (string) προεπιλογή είναι 'U'
Στο κλειδί options
μπορούν να αναφερθούν και άλλες επιλογές, τις
οποίες θα βρείτε στην τεκμηρίωση των PDO
drivers, όπως για παράδειγμα:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Πολλαπλές συνδέσεις
Στη διαμόρφωση μπορούμε να ορίσουμε και πολλαπλές συνδέσεις βάσης δεδομένων χωρίζοντάς τις σε ονομασμένες ενότητες:
database:
main:
dsn: 'mysql:host=127.0.0.1;dbname=test'
user: root
password: password
another:
dsn: 'sqlite::memory:'
Το Autowiring είναι ενεργοποιημένο μόνο για τις υπηρεσίες από την πρώτη
ενότητα. Μπορεί να αλλάξει χρησιμοποιώντας autowired: false
ή
autowired: true
.
Υπηρεσίες DI
Αυτές οι υπηρεσίες προστίθενται στο DI container, όπου το ###
αντιπροσωπεύει το όνομα της σύνδεσης:
Όνομα | Τύπος | Περιγραφή |
---|---|---|
database.###.connection |
Nette\Database\Connection | σύνδεση με τη βάση δεδομένων |
database.###.explorer |
Nette\Database\Explorer | Database Explorer |
Αν ορίσουμε μόνο μία σύνδεση, τα ονόματα των υπηρεσιών θα είναι
database.default.connection
και database.default.explorer
. Αν ορίσουμε πολλαπλές
συνδέσεις όπως στο παραπάνω παράδειγμα, τα ονόματα θα αντιστοιχούν
στις ενότητες, δηλ. database.main.connection
, database.main.explorer
και
επιπλέον database.another.connection
και database.another.explorer
.
Τις μη-autowired υπηρεσίες τις περνάμε ρητά με αναφορά στο όνομά τους:
services:
- UserFacade(@database.another.connection)