Διαμόρφωση βάσης δεδομένων

Επισκόπηση των επιλογών διαμόρφωσης για το 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)
έκδοση: 4.0