Codeigniter Active Record: Εισαγωγή, Επιλογή, Ενημέρωση, Διαγραφή

Τα δεδομένα είναι η γραμμή αίματος των περισσότερων εφαρμογών. Τα δεδομένα πρέπει να αποθηκεύονται με τέτοιο τρόπο ώστε να μπορούν να αναλυθούν περαιτέρω για την παροχή πληροφοριών και τη διευκόλυνση των επιχειρηματικών αποφάσεων. Τα δεδομένα συνήθως αποθηκεύονται στη βάση δεδομένων. Μεταξύ των βασικών ανησυχιών κατά την αλληλεπίδραση με τη βάση δεδομένων είναι η ασφάλεια, η ευκολία πρόσβασης και οι συγκεκριμένες υλοποιήσεις της δομημένης γλώσσας ερωτημάτων (SQL) από τον προμηθευτή της βάσης δεδομένων.

Η ενεργή εγγραφή είναι ένα μοτίβο σχεδίασης που καθιστά εύκολη την αλληλεπίδραση με τη βάση δεδομένων με εύκολο, ασφαλή και εύγλωττο τρόπο.

Η ενεργή εγγραφή έχει τα ακόλουθα πλεονεκτήματα

  • Εισαγάγετε, ενημερώστε και διαγράψτε εγγραφές με απλές αλυσίδες μεθόδων ενεργής εγγραφής
  • Υποβάλλει την εισαγωγή του χρήστη με ασφαλή τρόπο χρησιμοποιώντας παραμέτρους
  • Σας επιτρέπει να εργάζεστε με πολλαπλές μηχανές βάσης δεδομένων, όπως π.χ MySQL, SQL Server κ.λπ. χωρίς να ξαναγράψετε τον κώδικα της εφαρμογής
  • Το CodeIgniter χρησιμοποιεί προγράμματα οδήγησης ειδικά για κάθε μηχανή βάσης δεδομένων στο παρασκήνιο.

Πώς να χρησιμοποιήσετε το Active Record: Παράδειγμα

Σε αυτό το σεμινάριο, θα συζητήσουμε τη βάση δεδομένων εκμάθησης. Θα έχουμε δύο τραπέζια, το ένα με παραγγελίες το άλλο με λεπτομέρειες.

Αυτό το σεμινάριο υποθέτει ότι έχετε MySQL εγκατεστημένη και τρέχουσα βάση δεδομένων.

Εκτελέστε τα ακόλουθα σενάρια για να δημιουργήσετε τη βάση δεδομένων εκμάθησης:

CREATE SCHEMA ci_active_record;

USE ci_active_record;

CREATE TABLE `order_details` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) DEFAULT NULL,
  `item` varchar(245) DEFAULT NULL,
  `quantity` int(11) DEFAULT '0',
  `price` decimal(10,2) DEFAULT '0.00',
  `sub_total` decimal(10,2) DEFAULT '0.00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT = 1;

CREATE TABLE `orders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date` timestamp NULL DEFAULT NULL,
  `customer_name` varchar(245) DEFAULT NULL,
  `customer_address` varchar(245) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT = 1;

Ο παραπάνω κώδικας δημιουργεί μια βάση δεδομένων με το όνομα ci_active_record και δημιουργεί δύο πίνακες, δηλαδή παραγγελίες και order_details. Η σχέση μεταξύ των δύο πινάκων ορίζεται από το αναγνωριστικό στήλης στον πίνακα παραγγελιών και το αναγνωριστικό παραγγελίας στον πίνακα order_details.

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

Τώρα θα διαμορφώσουμε την εφαρμογή μας ώστε να μπορεί να επικοινωνεί με αυτήν τη βάση δεδομένων.

Ανοίξτε το αρχείο διαμόρφωσης βάσης δεδομένων που βρίσκεται στο application/config/database.php

εντοπίστε τις ακόλουθες γραμμές στο αρχείο ρυθμίσεων

'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => '',

Ενημερώστε τον παραπάνω κώδικα ως εξής

'hostname' => 'localhost',
	'username' => 'root',
	'password' => 'letmein',
	'database' => 'ci_active_record',

Σημείωση: θα χρειαστεί να αντικαταστήσετε το όνομα χρήστη και τον κωδικό πρόσβασης με αυτά που ταιριάζουν με τις ρυθμίσεις σας MySQL.

Εκτός από τις λεπτομέρειες διαμόρφωσης της βάσης δεδομένων, πρέπει επίσης να πούμε στον CodeIgniter να φορτώσει τη βιβλιοθήκη της βάσης δεδομένων όταν φορτώνει

Βήμα 1) Ανοίξτε το ακόλουθο αρχείο application/config/autoload.php

Βήμα 2) Εντοπίστε τις βιβλιοθήκες κλειδιών του πίνακα $autoload και φορτώστε τη βιβλιοθήκη της βάσης δεδομένων όπως φαίνεται παρακάτω

$autoload['libraries'] = array('database');

ΕΔΩ,

  • Ο παραπάνω κώδικας φορτώνει τη βιβλιοθήκη της βάσης δεδομένων όταν ξεκινά η εφαρμογή

CodeIgniter Insert Active Record

Για λόγους δοκιμής, θα δημιουργήσουμε έναν ελεγκτή και καθορισμένες διαδρομές που θα χρησιμοποιήσουμε για να αλληλεπιδράσουμε με την εφαρμογή μας μέσω ενεργής εγγραφής.

Δημιουργήστε μια νέα εφαρμογή αρχείου/ελεγκτές/ActiveRecordController.php

Προσθέστε τον ακόλουθο κώδικα στο ActiveRecordController.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class ActiveRecordController extends CI_Controller {
    public function store_order(){
        $data = [
            'date' => '2018-12-19',
            'customer_name' => 'Joe Thomas',
            'customer_address' => 'US'
        ];

        
        $this->db->insert('orders', $data); 

        echo 'order has successfully been created';
    }
}

ΕΔΩ,

  • Το $data = […] ορίζει δεδομένα μεταβλητής πίνακα που χρησιμοποιεί ονόματα πινάκων βάσης δεδομένων ως κλειδιά πίνακα και τους εκχωρεί τιμές
  • $this->db->insert(' orders', $data); καλεί τη μέθοδο εισαγωγής της βιβλιοθήκης της βάσης δεδομένων, μεταβιβάζει τις παραγγελίες ονομάτων του πίνακα και τη μεταβλητή του πίνακα $data ως παράμετρο. Αυτή η γραμμή δημιουργεί την πρόταση SQL INSERT χρησιμοποιώντας τα κλειδιά του πίνακα ως ονόματα πεδίων και τις τιμές του πίνακα ως τιμές που θα εισαχθούν στη βάση δεδομένων.

Τώρα που δημιουργήσαμε με επιτυχία τη μέθοδο ελεγκτή για ενεργή εγγραφή, θα χρειαστεί τώρα να δημιουργήσουμε μια διαδρομή που θα καλέσουμε για να εκτελέσουμε τη μέθοδο ελεγκτή.

Τώρα ανοίξτε το routes.php στο application/config/routes.php

προσθέστε την ακόλουθη γραμμή στις διαδρομές

$route['ar/insert'] = 'activerecordcontroller/store_order';

ΕΔΩ,

  • Ορίζουμε μια διαδρομή ar/insert που καλεί το store_order του ActiveRecordController.

Ας ξεκινήσουμε τώρα τον διακομιστή web για να δοκιμάσουμε τη μέθοδό μας.

Εκτελέστε την ακόλουθη εντολή για να ξεκινήσετε τον ενσωματωμένο διακομιστή για PHP

cd C:\Sites\ci-app
php -S localhost:3000

ΕΔΩ,

  • Μεταβείτε στην παραπάνω εντολή στη γραμμή εντολών και ξεκινήστε τον ενσωματωμένο διακομιστή στη θύρα 3000.

Φορτώστε την παρακάτω διεύθυνση URL στο πρόγραμμα περιήγησής σας

http://localhost:3000/ar/insert

Θα λάβετε τα ακόλουθα αποτελέσματα

order has successfully been created

Ανοίξτε το MySQL Βάση δεδομένων εκμάθησης και ελέγξτε τον πίνακα παραγγελιών

Θα μπορείτε να δημιουργήσετε νέα σειρά όπως φαίνεται στην παρακάτω εικόνα

CodeIgniter Insert Active Record

CodeIgniter Επιλέξτε Ενεργή εγγραφή

Σε αυτήν την ενότητα, θα δούμε πώς να διαβάζουμε τις εγγραφές που έχουμε στη βάση δεδομένων και να τις εμφανίζουμε στο πρόγραμμα περιήγησης ιστού ως μη ταξινομημένη λίστα

Προσθέστε την ακόλουθη μέθοδο στο ActiveRecordController

public function index() {
        $query = $this->db->get('orders');
        
        echo "<h3>Orders Listing</h3>";
        echo "<ul>";
        
        foreach ($query->result() as $row) {
            echo "<li>$row->customer_name</li>";
        }
        
        echo "</ul>";
    }

ΕΔΩ,

  • $query = $this->db->get(' orders'); εκτελεί το ερώτημα επιλογής έναντι του πίνακα παραγγελιών επιλέγοντας όλα τα πεδία
  • ηχώ " Λίστα παραγγελιών ”? εμφανίζει μια επικεφαλίδα HTML μεγέθους 4
  • ηχώ " ”? εκτυπώνει την ετικέτα ανοίγματος για μη διατεταγμένη λίστα HTML
  • foreach ($query->result() ως $row) {…} χρησιμοποίησε τον βρόχο for για να πραγματοποιήσει βρόχο στα αποτελέσματα που επιστράφηκαν από τη βάση δεδομένων. ηχώ " $row->customer_name ”? εκτυπώνει το όνομα πελάτη από τη βάση δεδομένων

Πριν φορτώσετε την ακόλουθη διεύθυνση URL, μπορείτε να φορτώσετε μερικές ακόμη εγγραφές στη βάση δεδομένων.

Ας ορίσουμε τώρα μια διαδρομή για το ερώτημα SELECT

Ανοίξτε τον πίνακα application/config/routes.php

Προσθέστε την ακόλουθη διαδρομή

$route['ar'] = 'activerecordcontroller';

ΕΔΩ,

  • Η διαδρομή ar δείχνει τη μέθοδο ευρετηρίου της κλάσης ActiveRecordController. Αυτό είναι από προεπιλογή, γι' αυτό δεν καθορίσαμε τη μέθοδο ευρετηρίου όπως κάνατε για τη διαδρομή που εισάγει εγγραφές

Υποθέτοντας ότι ο διακομιστής web εκτελείται ήδη, φορτώστε την ακόλουθη διεύθυνση URL

http://localhost:3000/ar

Θα πρέπει να μπορείτε να βλέπετε αποτελέσματα που είναι πολύ παρόμοια με τα παρακάτω στο πρόγραμμα περιήγησής σας

CodeIgniter Επιλέξτε Ενεργή εγγραφή

CodeIgniter Update Active Record

Σε αυτήν την ενότητα, θα μιλήσουμε για τον τρόπο χρήσης της ενεργής εγγραφής για την ενημέρωση της βάσης δεδομένων. Ας υποθέσουμε ότι θέλουμε να ενημερώσουμε το όνομα πελάτη Joe Thomas σε Joe.

Προσθέστε την ακόλουθη μέθοδο στην κλάση ActiveRecordController

public function update_order() {
        $data = [
            'customer_name' => 'Joe',
        ];
        $this->db->where('id', 1);
        $this->db->update('orders', $data);
        echo 'order has successfully been updated';
    }

ΕΔΩ,

  • Το $data = […] ορίζει τα πεδία και τις τιμές που θέλουμε να ενημερώσουμε στον πίνακα της βάσης δεδομένων
  • $this->db->where('id', 1); ορίζει τον όρο όπου του ερωτήματος ενημέρωσης
  • $this->db->update(' orders', $data); δημιουργεί το ερώτημα ενημέρωσης SQL και το εκτελεί στη βάση δεδομένων μας.

Ο παραπάνω κώδικας θα παράγει την ακόλουθη δήλωση SQL

UPDATE orders SET customer_name = 'Joe' WHERE id = 1;

Ας ενημερώσουμε τώρα την εφαρμογή routes.php/config/routes.php

Προσθέστε την ακόλουθη διαδρομή

$route['ar/update'] = 'activerecordcontroller/update_order';

Αποθηκεύστε τις αλλαγές

Φορτώστε την ακόλουθη διεύθυνση URL στο πρόγραμμα περιήγησης ιστού

CodeIgniter Update Active Record

Ας εμφανίσουμε τώρα τις εγγραφές της βάσης δεδομένων και ας δούμε αν έχουν επηρεαστεί οι αλλαγές.

CodeIgniter Update Active Record

Όπως μπορείτε να δείτε από την παραπάνω εικόνα, η πρώτη εγγραφή έχει ενημερωθεί από τον Joe Thomas σε Joe.

CodeIgniter Διαγραφή ενεργής εγγραφής

Τώρα θα διαγράψουμε μια εγγραφή από τη βάση δεδομένων. Θα διαγράψουμε την εγγραφή με το αναγνωριστικό του 3.

Προσθέστε την ακόλουθη μέθοδο στο ActiveRecordController

public function delete_order() {
        $this->db->where('id', 3);
        $this->db->delete('orders');

        echo 'order has successfully been deleted';
    }

ΕΔΩ,

  • $this->db->where('id', 1); ορίζει τη ρήτρα όπου
  • $this->db->delete(' orders'); διαγράφει τη σειρά της βάσης δεδομένων στον πίνακα παραγγελιών με βάση τα κριτήρια που έχουν οριστεί χρησιμοποιώντας τον όρο όπου.

Για να εκτελέσετε τον παραπάνω κώδικα, φορτώστε την ακόλουθη διεύθυνση URL στο πρόγραμμα περιήγησής μας

http://localhost:3000/ar/delete

Σύνοψη

Σε αυτό το σεμινάριο, έχετε μάθει πώς να εργάζεστε με μια ενεργή εγγραφή για την εισαγωγή, ενημέρωση, διαγραφή και επιλογή εγγραφών από τη βάση δεδομένων. Δουλέψαμε με στατικές τιμές για τη δημιουργία εγγραφών, την ενημέρωση και τη διαγραφή. Στο επόμενο σεμινάριο, θα δημιουργήσουμε μια διεπαφή χρήστη που μπορεί να χρησιμοποιήσει ο χρήστης για να δημιουργήσει εγγραφές δυναμικά στη βάση δεδομένων.