CodeIgniter Active Record: Ekleme, Güncelleme, Silme Sorgusu
⚡ Akıllı Özet
CodeIgniter Active Record, bir modelin veritabanına basit ve güvenli yöntem zincirleriyle veri okuma ve yazma yapmasını sağlayan bir tasarım desenidir. Kodu yeniden yazmaya gerek kalmadan farklı veritabanı motorlarında ekleme, seçme, güncelleme ve silme işlemlerini destekler ve SQL enjeksiyonunu önlemek için girişi parametreleştirir.

Veri, çoğu uygulamanın can damarıdır. Analiz edilebilmesi, içgörüler sağlayabilmesi ve iş kararlarını kolaylaştırabilmesi için depolanması gerekir. Veri genellikle bir veritabanında saklanır. Veritabanıyla etkileşimde bulunurken en önemli hususlar arasında güvenlik, erişim kolaylığı ve veritabanı sağlayıcısına özgü Yapılandırılmış Sorgu Dili (SQL) uygulamaları yer alır.
Active Record, veritabanıyla güvenli ve etkili bir şekilde etkileşim kurmayı kolaylaştıran bir tasarım desenidir. Active Record'un aşağıdaki avantajları vardır:
- Basit metot zincirleri kullanarak kayıt ekleme, güncelleme ve silme işlemleri gerçekleştirin.
- Kullanıcı girdisini parametreler kullanarak güvenli bir şekilde gönderir.
- Gibi birden fazla veritabanı motoruyla çalışmanıza olanak tanır MySQL ve uygulama kodunu yeniden yazmaya gerek kalmadan SQL Server'ı kullanmak.
- CodeIgniter, arka planda her veritabanı motoruna özgü sürücüler kullanır.
Active Record Nasıl Kullanılır: Örnek
Bu eğitimde, biri siparişler diğeri detaylar olmak üzere iki tablo içeren örnek bir veritabanı kullanacağız. Bu eğitim, aşağıdaki bilgilere sahip olduğunuzu varsaymaktadır: MySQL Veritabanı kuruldu ve çalışıyor. Eğitim veritabanını oluşturmak için aşağıdaki komut dosyalarını çalıştırın:
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;
Yukarıdaki kod, ci_active_record adında bir veritabanı ve orders ile order_details adında iki tablo oluşturur. İki tablo arasındaki ilişki, orders tablosundaki id sütunu ve order_details tablosundaki order_id sütunu ile tanımlanır.
CodeIgniter Veritabanı Yapılandırması
Şimdi uygulamamızı bu veritabanıyla iletişim kuracak şekilde yapılandıracağız. application/config/database.php adresinde bulunan veritabanı yapılandırma dosyasını açın ve aşağıdaki satırları bulun:
'hostname' => 'localhost', 'username' => '', 'password' => '', 'database' => '',
Yukarıdaki kodu aşağıdaki şekilde güncelleyin:
'hostname' => 'localhost', 'username' => 'root', 'password' => 'letmein', 'database' => 'ci_active_record',
Not: Kullanıcı adınızı ve şifrenizi kendi bilgilerinizle değiştirmeniz gerekecek. MySQL konfigürasyonu.
Veritabanı yapılandırma ayrıntılarına ek olarak, şunları da belirtmemiz gerekiyor: CodeIgniter, yükleme sırasında veritabanı kütüphanesini de yükleyecek.
) 1 Adım Şu dosyayı açın: application/config/autoload.php.
) 2 Adım Aşağıda gösterildiği gibi, `$autoload` dizi anahtar kütüphanelerini bulun ve veritabanı kütüphanesini yükleyin:
$autoload['libraries'] = array('database');
İşte:
- Yukarıdaki kod, uygulama başladığında veritabanı kütüphanesini yükler.
CodeIgniter Aktif Kaydı Ekle
Test amacıyla, Active Record aracılığıyla uygulamamızla etkileşim kurmak için bir denetleyici oluşturacağız ve rotalar tanımlayacağız. application/controllers/ActiveRecordController.php adlı yeni bir dosya oluşturun ve aşağıdaki kodu ekleyin:
<?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'; } }
İşte:
- $data = […] ifadesi, veritabanı tablosunun sütun adlarını dizi anahtarı olarak kullanan ve bunlara değerler atayan bir dizi değişkeni olan data'yı tanımlar.
- `$this->db->insert('orders', $data);` ifadesi, veritabanı kütüphanesinin `insert` yöntemini çağırır ve `orders` tablo adını ve `$data` dizi değişkenini parametre olarak geçirir. Bu satır, dizi anahtarlarını alan adları ve dizi değerlerini eklenecek değerler olarak kullanarak SQL `INSERT` ifadesini oluşturur.
Denetleyici metodunu oluşturduğumuza göre, onu çalıştırmak için çağıracağımız bir rota oluşturmamız gerekiyor. application/config/routes.php dosyasını açın ve aşağıdaki satırı ekleyin:
$route['ar/insert'] = 'activerecordcontroller/store_order';
İşte:
- ActiveRecordController'ın store_order yöntemini çağıran ar/insert adında bir rota tanımlıyoruz.
Şimdi yöntemimizi test etmek için web sunucusunu başlatalım. Dahili PHP sunucusunu başlatmak için aşağıdaki komutu çalıştırın:
cd C:\Sites\ci-app php -S localhost:3000
İşte:
- Yukarıdaki komut, proje dizinine giderek yerleşik sunucuyu 3000 numaralı portta başlatır.
Aşağıdakileri yükleyin URL tarayıcınıza: http://localhost:3000/ar/insert. Aşağıdaki sonucu alacaksınız:
order has successfully been created
Açın MySQL Eğitim veritabanını kontrol edin ve siparişler tablosuna bakın. Aşağıdaki resimde gösterildiği gibi yeni oluşturulan satırı göreceksiniz:
CodeIgniter Select Active Record
Bu bölümde, veritabanındaki kayıtları nasıl okuyacağımızı ve bunları web tarayıcısında sıralanmamış bir liste olarak nasıl görüntüleyeceğimizi göreceğiz. ActiveRecordController'a aşağıdaki yöntemi ekleyin:
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>"; }
İşte:
- `$query = $this->db->get('orders');` ifadesi, `orders` tablosuna karşı `SELECT` sorgusunu çalıştırarak tüm alanları seçer.
- yankı Sipariş Listesi "; bir HTML başlığı görüntüler.
- yankı "; sıralı olmayan bir HTML listesinin açılış etiketini yazdırır.
- foreach ($query->result() as $row) {…} veritabanından döndürülen sonuçlar arasında döngü yapar ve " $row->müşteri_adı "; müşteri adını yazdırır.
Yüklemeden önce URLVeritabanına birkaç kayıt daha ekleyebilirsiniz. Şimdi SELECT sorgusu için bir rota tanımlayalım. application/config/routes.php dosyasını açın ve aşağıdaki rotayı ekleyin:
$route['ar'] = 'activerecordcontroller';
İşte:
- `ar` rotası, `ActiveRecordController` sınıfının `index` metoduna işaret eder. Bu varsayılan değerdir, bu nedenle kayıt ekleyen rota için yaptığımız gibi `index` metodunu belirtmedik.
Web sunucusunun zaten çalıştığını varsayarak, aşağıdakileri yükleyin. URL: http://localhost:3000/arWeb tarayıcınızda aşağıdaki gibi sonuçlar görmelisiniz:
CodeIgniter Güncellemesi Active Record
Bu bölümde, Active Record kullanarak veritabanını nasıl güncelleyeceğimizden bahsedeceğiz. Örneğin, müşteri adını Joe Thomas'tan Joe'ya güncellemek istediğimizi varsayalım. ActiveRecordController sınıfına aşağıdaki metodu ekleyin:
public function update_order() { $data = [ 'customer_name' => 'Joe', ]; $this->db->where('id', 1); $this->db->update('orders', $data); echo 'order has successfully been updated'; }
İşte:
- $data = […] ifadesi, veritabanı tablosunda güncellemek istediğimiz alanları ve değerleri tanımlar.
- `$this->db->where('id', 1);` ifadesi, güncelleme sorgusunun `where` koşulunu belirler.
- $this->db->update('siparişler', $veri); SQL güncelleme sorgusunu oluşturur ve veritabanımızda yürütür.
Yukarıdaki kod aşağıdaki SQL sorgusunu üretir:
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Şimdi application/config/routes.php dosyasını güncelleyelim ve aşağıdaki rotayı ekleyelim:
$route['ar/update'] = 'activerecordcontroller/update_order';
Değişiklikleri kaydedin ve aşağıdakileri yükleyin. URL Web tarayıcısında:
Şimdi veritabanı kayıtlarını görüntüleyelim ve değişikliğin etkili olup olmadığını görelim.
Yukarıdaki resimde de görebileceğiniz gibi, ilk kayıt Joe Thomas'tan Joe olarak güncellendi.
CodeIgniter Aktif Kaydı Sil
Şimdi veritabanından bir kaydı sileceğiz. Kimliği 3 olan kaydı sileceğiz. ActiveRecordController'a aşağıdaki metodu ekleyin:
public function delete_order() { $this->db->where('id', 3); $this->db->delete('orders'); echo 'order has successfully been deleted'; }
İşte:
- $this->db->where('id', 3); ifadesi where koşulunu belirler.
- `$this->db->delete('orders');` ifadesi, `where` koşulu kullanılarak belirlenen kriterlere göre `orders` tablosundaki veritabanı satırını siler.
Yukarıdaki kodu çalıştırmak için aşağıdakileri yükleyin. URL Web tarayıcınızda: http://localhost:3000/ar/delete.




