39 |
το πεδίο «email» θα είναι τύπου email και επομένως θα είναι της μορφής «xxxx@xxx.xx».
Ταυτόχρονα μπορούμε να θεσπίσουμε πως κάποιο πεδίο θα είναι κενό (NULL) ή μη κενό αρχικά
και ποια από τα πεδία θα είναι απαιτούμενα (Required) ή προαιρετικά.
Στο μοντέλο γράφουμε συναρτήσεις οι οποίες διαχειρίζονται τα δεδομένα. Έτσι, δύο πολύ
σημαντικές συναρτήσεις πρέπει να είναι η BeforeValidate() και η BeforeSave(). Η πρώτη
ασχολείται με ελέγχους σε τιμές πεδίων που μας στέλνει ο πελάτης ώστε να είναι συμβατές με το
σύστημα μας και με τις ιδιότητες που θέλουμε να του προσδώσουμε. Έτσι για παράδειγμα στο
σύστημα διαχείρισης θέσεων πρακτικής άσκησης που πραγματεύεται η Δ.Ε. , είναι αδύνατο ο
φοιτητής να καταχωρήσει πως έχει μέσο όρο έντεκα ή πως έχει περασμένα επιτυχώς διακόσια
μαθήματα. Αυτά πρέπει να τα προβλέψουμε και να γράψουμε ορθό κώδικα που να ελέγχει και να
επικυρώνει την ορθότητα των τιμών των δεδομένων που εισάγει ο χρήστης.
Η δεύτερη ασχολείται με ελέγχους και καταχωρήσεις ενίοτε στα πεδία, πριν γίνει η
αποθήκευση στη βάση δεδομένων. Έτσι για παράδειγμα μπορούμε να αλλάξουμε το όνομα ενός
αρχείου πριν το αποθηκεύσουμε με κάποιο αλγόριθμο τυχαίου αλφαριθμητικού με σκοπό την
αποφυγή ίδιων ονομάτων, και ταυτόχρονα να καταχωρήσουμε την πραγματική ονομασία σε ένα
άλλο πεδίο πριν το αποθηκεύσουμε. Μπορούμε επίσης να καταχωρήσουμε κάποια τιμή με κώδικα
σε κάποιο πεδίο που δεν δίνεται από τον χρήστη και το γνωρίζουμε μονάχα εμείς. Παράδειγμα στη
Δ.Ε. αποτελεί το πεδίο Type του πίνακα Users. Το πρώτο ορίζει τον τύπο, και το δεύτερο
αναφέρεται στον βασικό πίνακα χρηστών. Έτσι κατά την εγγραφή ή δημιουργία ενός φοιτητή θα
πρέπει να καταχωρήσουμε στο πεδίο Type την τιμή 1 αφού αποτελεί το χαρακτηριστικό τύπο των
φοιτητών.
Οι υπόλοιπες συναρτήσεις που καλούμαστε να γράψουμε σε php κώδικα στο μοντέλο
πρέπει να είναι συναρτήσεις ανάκτησης και συναρτήσεις αναζήτησης δεδομένων από τη βάση. Οι
συναρτήσεις ανάκτησης δεδομένων ως συνήθως έχουν την μορφή findByxx() ή findAll() οι οποίες
επιστρέφουν είτε κάποιες εγγραφές με κάποιο κοινό στοιχείο στην περίπτωση της πρώτης, είτε
όλες τις εγγραφές της οντότητας που περιγράφει το μοντέλο. Επίσης μία συνάρτηση η οποία πρέπει
να βρίσκεται πάντα στο μοντέλο είναι του τύπου loadModel($x) η οποία επιστρέφει το αντικείμενο
ενός μοντέλου το οποίο είναι μία εγγραφή με όλα τα πεδία σε κάποιο πίνακα στη βάση δεδομένων.