Βάση δεδομένων Nette
Η Nette Database είναι ένα ισχυρό και κομψό επίπεδο βάσης δεδομένων για την PHP με έμφαση στην απλότητα και τα έξυπνα χαρακτηριστικά. Προσφέρει δύο συμπληρωματικούς τρόπους για να εργαστείτε με τα δεδομένα σας – χρησιμοποιώντας την Εξερεύνηση για γρήγορη ανάπτυξη ή τον τρόπο SQL για πλήρη έλεγχο των ερωτημάτων.
Τρόπος SQL
- Ασφαλή, παραμετροποιημένα ερωτήματα
- Ακριβής έλεγχος της δομής των ερωτημάτων SQL
- Ιδανικό για τη συγγραφή σύνθετων ερωτημάτων με προηγμένες συναρτήσεις
- Βελτιστοποίηση της απόδοσης με τη χρήση συγκεκριμένων συναρτήσεων SQL
Τρόπος εξερεύνησης
- Γρήγορη ανάπτυξη χωρίς να γράφετε SQL
- Διαισθητικός χειρισμός των σχέσεων μεταξύ πινάκων
- Αυτόματη βελτιστοποίηση ερωτημάτων
- Εξαιρετική για γρήγορες και βολικές αλληλεπιδράσεις με βάσεις δεδομένων
Εγκατάσταση
Μπορείτε να κατεβάσετε και να εγκαταστήσετε τη βιβλιοθήκη χρησιμοποιώντας το Composer:
Υποστηριζόμενες βάσεις δεδομένων
Η Nette Database υποστηρίζει τις ακόλουθες βάσεις δεδομένων:
Διακομιστής βάσης δεδομένων | Όνομα DSN | Υποστήριξη Explorer | |
---|---|---|---|
MySQL (>= 5.1) | mysql | ΝΑΙ | |
PostgreSQL (>= 9.0) | pgsql | ΝΑΙ | |
SQLite 3 (>= 3.8) | sqlite | ΝΑΙ | |
Oracle | oci | ΟΧΙ | ΟΧΙ |
MS SQL (PDO_SQLSRV) | sqlsrv | ΝΑΙ | ΝΑΙ |
MS SQL (PDO_DBLIB) | mssql | NO | NO |
ODBC | odbc | NO |
Δύο προσεγγίσεις για την εργασία στη βάση δεδομένων
Με τη βάση δεδομένων Nette, μπορείτε είτε να γράψετε απευθείας ερωτήματα SQL (τρόπος SQL) είτε να αφήσετε την SQL να δημιουργηθεί αυτόματα (τρόπος Explorer). Ας δούμε πώς και οι δύο προσεγγίσεις επιλύουν τις ίδιες εργασίες:
Τρόπος SQL – Συγγραφή ερωτημάτων SQL
Τρόπος Explorer – Αυτόματη παραγωγή SQL
Η προσέγγιση Explorer παράγει και βελτιστοποιεί αυτόματα ερωτήματα SQL. Στο παραπάνω παράδειγμα, το παράδειγμα με τον τρόπο SQL παράγει Ν+1 ερωτήματα (ένα για τους συγγραφείς και ένα για τα βιβλία κάθε συγγραφέα), ενώ ο Εξερευνητής εκτελεί μόνο δύο βελτιστοποιημένα ερωτήματα – ένα για τους συγγραφείς και ένα για όλα τα βιβλία τους.
Μπορείτε να συνδυάσετε ελεύθερα και τις δύο προσεγγίσεις στην εφαρμογή σας ανάλογα με τις ανάγκες σας.
Σύνδεση και διαμόρφωση
Για να συνδεθείτε στη βάση δεδομένων, απλά δημιουργήστε μια περίπτωση της κλάσης Nette\Database\Connection:
Η παράμετρος $dsn
(Data Source Name) ακολουθεί την ίδια μορφή που χρησιμοποιεί το PDO,
π.χ. host=127.0.0.1;dbname=test
. Εάν η σύνδεση αποτύχει, πετάει το
Nette\Database\ConnectionException
.
Ωστόσο, μια πιο βολική μέθοδος είναι η χρήση των ρυθμίσεων της εφαρμογής. Προσθέστε μια ενότητα
database
και θα δημιουργηθούν τα απαιτούμενα αντικείμενα,
συμπεριλαμβανομένου ενός πίνακα βάσης δεδομένων στη γραμμή
εντοπισμού σφαλμάτων του Tracy.
Μετά από αυτό, το αντικείμενο σύνδεσης μπορεί να ανακτηθεί ως υπηρεσία από το δοχείο DI, π.χ:
Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Διαμόρφωση βάσης δεδομένων.
Χειροκίνητη δημιουργία του Explorer
Εάν δεν χρησιμοποιείτε το δοχείο Nette DI, μπορείτε να δημιουργήσετε
χειροκίνητα μια περίπτωση του Nette\Database\Explorer
:
Διαχείριση συνδέσεων
Όταν δημιουργείτε ένα αντικείμενο Connection
, αυτό συνδέεται
αυτόματα με τη βάση δεδομένων. Αν θέλετε να καθυστερήσετε τη σύνδεση,
ενεργοποιήστε τη λειτουργία lazy mode στη διαμόρφωση
ρυθμίζοντας το lazy
, ή κάντε το ως εξής:
Για να διαχειριστείτε τη σύνδεση, χρησιμοποιήστε τις μεθόδους
connect()
, disconnect()
και reconnect()
.
- Η μέθοδος
connect()
εγκαθιστά μια σύνδεση εάν δεν έχει ήδη δημιουργηθεί και μπορεί να πετάξει έναNette\Database\ConnectionException
. - Η
disconnect()
αποσυνδέεται από τη βάση δεδομένων. - Η μέθοδος
reconnect()
αποσυνδέεται και στη συνέχεια επανασυνδέεται με τη βάση δεδομένων και μπορεί επίσης να προκαλέσει σφάλμαNette\Database\ConnectionException
.
Επιπλέον, μπορείτε να παρακολουθείτε τα συμβάντα σύνδεσης
χρησιμοποιώντας το συμβάν onConnect
, το οποίο είναι ένας πίνακας από
callbacks που εκτελούνται μετά τη σύνδεση με τη βάση δεδομένων.
Γραμμή εντοπισμού σφαλμάτων Tracy
Εάν χρησιμοποιείτε το Tracy, ο πίνακας Βάση δεδομένων στη γραμμή εντοπισμού σφαλμάτων είναι αυτόματα ενεργοποιημένος. Εμφανίζει όλα τα εκτελεσμένα ερωτήματα, τις παραμέτρους τους, το χρόνο εκτέλεσης και τη θέση στον κώδικα όπου κλήθηκαν.
