قاعدة بيانات CodeIgniter: التكوين، التحرير، التحديث، حذف البيانات
قاعدة بيانات Codeigniter
في البرنامج التعليمي السابق، قمنا بتغطية أساسيات السجل النشط لـ CodeIgniter وكيفية إدراج السجلات وتحديثها وحذفها وقراءتها من قاعدة البيانات. في هذا البرنامج التعليمي، سنقوم بإنشاء نماذج قاعدة بيانات واستخدام النماذج لإنشاء سجلات قاعدة البيانات وتحديثها. إذا كنت جديدًا تمامًا في العمل مع قواعد البيانات في CodeIgniter، فننصحك بقراءة البرنامج التعليمي السابق
تكوين قاعدة بيانات Codeigniter
سنبدأ بإنشاء قاعدة بيانات المشروع التعليمي. سننشئ قاعدة بيانات بسيطة لإدارة تفاصيل الاتصال. سننشئ قاعدة بيانات بسيطة تحتوي على جدولين (2) باسم pals والمدن التي يعيشون فيها. العلاقة بين pals والمدن هي علاقة فردية مع id في cities كمفتاح أساسي وcity_id كمفتاح خارجي في جداول pals.
قم بتشغيل البرامج النصية التالية لإنشاء قاعدة البيانات:
CREATE TABLE `pals` ( `id` int(11) NOT NULL AUTO_INCREMENT, `city_id` int(11) DEFAULT NULL, `contact_name` varchar(245) DEFAULT NULL, `contact_number` varchar(245) DEFAULT NULL, `email_address` varchar(245) DEFAULT NULL, PRIMARY KEY (`id`) );
لنقم الآن بإنشاء جدول المدن
CREATE TABLE `cities` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(245) DEFAULT NULL, PRIMARY KEY (`id`) ) ;
نماذج قاعدة بيانات CodeIgniter
سنقوم الآن بإنشاء نماذج لقاعدة البيانات الخاصة بنا. النموذج هو الجزء M من MVC. يتعامل النموذج مع الوصول إلى البيانات ومعالجة البيانات ومنطق الأعمال.
في CodeIgniter، يجب على كل نموذج تحديد الأساليب التي سيدعمها. بدلاً من تكرار نفس الكود في كل نموذج، سنستفيد من الوراثة في البرمجة الشيئية وننشئ فئة نموذج أصل تحدد الطرق الأساسية التي نرغب في أن تدعمها نماذجنا.
يوضح الجدول أدناه الطرق التي سنحددها وكيف سيتم الوصول إلى البيانات.
| S / N | الأسلوب | الوصف |
|---|---|---|
| 1 | __إنشاء | يحدد طريقة المنشئ التي تستدعي طريقة المنشئ الأصل |
| 2 | get_all | استرداد كافة الحقول والسجلات من قاعدة البيانات دون أي شروط |
| 3 | get_by_id | استرداد صف واحد من قاعدة البيانات باستخدام المفتاح الأساسي من نوع INT المسمى id |
| 4 | get_where | يسترد كافة الحقول من قاعدة البيانات بناءً على المعايير |
| 5 | أدخل | يقوم بإدراج سجل جديد في قاعدة البيانات |
| 6 | تحديث | يقوم بتحديث سجل قاعدة بيانات موجود بناءً على المفتاح الأساسي من نوع INT المسمى id |
| 7 | حذف | حذف سجل موجود من قاعدة البيانات بناءً على المفتاح الأساسي من نوع INT المسمى id |
تُظهر الصورة التالية مخطط الفئة وكيفية ارتباط نماذج الأطفال Pals and Cities بنموذج الأصل BaseModel.
سنقوم بإنشاء نموذجين كما هو موضح في الصورة أعلاه
قم بإنشاء فئة BaseModel جديدة في application/models/BaseModel.php
أضف الكود التالي
<?php
class BaseModel extends CI_Model {
protected $table = '';
public function __construct() {
parent::__construct();
}
public function get_all() {
return $this->db->get($this->table)
->result();
}
public function get_by_id($id) {
return $this->db->get_where($this->table, array('id' => $id))
->row();
}
public function get_where($where) {
return $this->db->where($where)
->get($this->table)
->result();
}
public function insert($data) {
return $this->db->insert($this->table, $data);
}
public function update($id, $data) {
$this->db->where('id', $id);
$this->db->update($this->table, $data);
}
public function delete($id) {
$this->db->where('id', $id);
$this->db->delete($this->table);
}
}
هنا،
- محمي $table = "; يحدد متغير محمي اسمه الجدول. سيتم ملء هذا بواسطة الفصل الفرعي المعني لتحديد الجدول الذي يجب أن تتفاعل معه أساليب فئة النموذج الأساسي لدينا.
- الوظيفة العامة __construct() {...} تحدد طريقة المنشئ وتنفذ طريقة المنشئ للفئة الأصلية CI_Model.
- يستخدم get_all() {…} مكتبة قاعدة البيانات وقيمة المتغير $table لتشغيل استعلام SELECT على قاعدة البيانات الخاصة بنا.
- يحدد get_by_id($id) {...} طريقة استرداد صف واحد من قاعدة البيانات ويقبل المعلمة $id التي يجب أن تكون من نوع بيانات INT.
- يحدد get_where($where) {...} طريقة الحصول التي تسمح لك بتعيين عبارة المكان.
- إدراج($data) {...} يحدد طريقة الإدراج ويقبل معلمة الصفيف $data التي تحتوي على القيم المراد كتابتها في قاعدة البيانات.
- التحديث($id, $data) {...} يحدد طريقة التحديث ويقبل معلمة الصفيف $data التي تحتوي على القيم المراد تحديثها في قاعدة البيانات.
- حذف($id) {...} يحدد طريقة الحذف التي تقبل معلمة $id التي يجب أن تكون من نوع البيانات INT.
الآن بعد أن انتهينا من فئة النموذج الأصلي، فلننشئ نماذج Pals الخاصة بنا
قم بإنشاء ملف جديد في application/models/Pals.php
أضف الكود التالي
<?php
class Pals_model extends BaseModel {
protected $table = 'pals';
public function __construct() {
parent::__construct();
}
public function get_by_id($id) {
$this->db->where('pals.id', $id);
$this->db->select('pals.*,cities.name');
$this->db->from('pals');
$this->db->join('cities', 'pals.city_id = cities.id');
$query = $this->db->get();
return $query->row();
}
public function get_all() {
$this->db->select('pals.*,cities.name');
$this->db->from('pals');
$this->db->join('cities', 'pals.city_id = cities.id');
$query = $this->db->get();
return $query->result();
}
}
هنا،
- يقوم class Pals بتوسيع BaseModel {...} بتوسيع النموذج الأصلي BaseModel ويجعل جميع الطرق المحددة في BaseModel يتم الوصول إليها تلقائيًا إلى الفئة الفرعية.
- محمي $table = 'pals'؛ يحدد اسم الجدول المرتبط بنموذجنا الأصلي
- __construct() {...} يقوم بتهيئة المنشئ الأصلي
- تتجاوز الوظيفة العامة get_by_id($id) {…} get_by_id لتوفير تطبيق مخصص خاص بنموذج Pals. يستخدم الاستعلام get_by_id صلة لاسترداد اسم المدينة من جدول المدن
- تتجاوز الوظيفة العامة get_all() {...} طريقة get_all لتنفيذ استعلام ربط بين جدول pals وcity
قم بإنشاء ملف جديد في application/models/Cities.php
<?php
class Cities extends BaseModel {
protected $table = 'cities';
public function __construct() {
parent::__construct();
}
}
هنا،
محمي $table = 'المدن'؛ يحدد جدول قاعدة البيانات النموذجية.
كما ترون من الكود المذكور أعلاه، فإن الوراثة توفر لنا الكثير من الوقت عند العمل مع النماذج في CodeIgniter. في القسم التالي، سوف نتعلم
وحدات تحكم مدير الاتصالات
الآن بعد أن أنشأنا النماذج، فلنقم بإنشاء وحدات التحكم لتطبيقنا. سيكون لدينا وحدتي تحكم هما جهات الاتصال والمدن
لنبدأ بالمدن
قم بإنشاء ملف جديد Cities.php في دليل التطبيق/وحدات التحكم
أضف الكود التالي
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Cities extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper('url', 'form');
$this->load->library('form_validation');
$this->load->model('cities_model');
}
public function index() {
$header['title'] = 'Cities Listing';
$data['pals'] = $this->cities_model->get_all();
$this->load->view('header',$header);
$this->load->view('cities/index', $data);
$this->load->view('footer');
}
public function create() {
$header['title'] = 'Create City';
$this->load->view('header',$header);
$this->load->view('cities/create');
$this->load->view('footer');
}
public function store() {
$rules = array(
array(
'field' => 'name',
'label' => 'City Name',
'rules' => 'required'
)
);
$this->form_validation->set_rules($rules);
if ($this->form_validation->run() == TRUE) {
$data = array('name' => $this->input->post('name'));
$this->cities_model->insert($data);
redirect(base_url('cities'));
} else {
$header['title'] = 'Create City';
$this->load->view('header',$header);
$this->load->view('cities/create');
$this->load->view('footer');
}
}
public function edit($id) {
$header['title'] = 'Edit City';
$data['city'] = $this->cities_model->get_by_id($id);
$this->load->view('header', $header);
$this->load->view('cities/edit', $data);
$this->load->view('footer');
}
public function update($id) {
$rules = array(
array(
'field' => 'name',
'label' => 'City Name',
'rules' => 'required'
)
);
$this->form_validation->set_rules($rules);
if ($this->form_validation->run() == TRUE) {
$data = array('name' => $this->input->post('name'));
$this->cities_model->update($id,$data);
redirect(base_url('cities'));
} else {
$header['title'] = 'Edit City';
$data['city'] = $this->cities_model->get_by_id($id);
$this->load->view('header',$header);
$this->load->view('cities/create',$data);
$this->load->view('footer');
}
}
public function delete($id) {
$header['title'] = 'Delete City';
$data['city'] = $this->cities_model->get_by_id($id);
$this->load->view('header', $header);
$this->load->view('cities/delete', $data);
$this->load->view('footer');
}
public function destroy($id) {
$this->cities_model->delete($id);
redirect(base_url('cities'));
}
}
هنا،
ينفذ الكود أعلاه جميع الطرق التي تحتاجها لإنشاء الصفوف وتحديثها وحذفها وقراءتها من قاعدة البيانات.
قم بإنشاء ملف Contacts.php آخر في التطبيق/وحدات التحكم
أضف الكود التالي
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Contacts extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper('url', 'form');
$this->load->library('form_validation');
$this->load->model('pals_model');
}
public function index() {
$header['title'] = 'Contacts List';
$data['pals'] = $this->pals_model->get_all();
$this->load->view('header', $header);
$this->load->view('contacts/index', $data);
$this->load->view('footer');
}
public function create() {
$this->load->model('cities_model');
$header['title'] = 'Create Contact';
$data['cities'] = $this->cities_model->get_all();
$this->load->view('header', $header);
$this->load->view('contacts/create', $data);
$this->load->view('footer');
}
public function store() {
$rules = array(
array(
'field' => 'contact_name',
'label' => 'Contact Name',
'rules' => 'required'
),
array(
'field' => 'contact_number',
'label' => 'Contact Number',
'rules' => 'required',
'errors' => array(
'required' => 'You must provide a %s.',
),
),
array(
'field' => 'email_address',
'label' => 'Email Address',
'rules' => 'required'
),
array(
'field' => 'city_id',
'label' => 'City',
'rules' => 'required'
)
);
$this->form_validation->set_rules($rules);
if ($this->form_validation->run() == FALSE) {
$this->load->model('cities_model');
$header['title'] = 'Create Contact';
$data['cities'] = $this->cities_model->get_all();
$this->load->view('header', $header);
$this->load->view('contacts/create', $data);
$this->load->view('footer');
} else {
$data = array(
'city_id' => $this->input->post('city_id'),
'contact_name' => $this->input->post('contact_name'),
'contact_number' => $this->input->post('contact_number'),
'email_address' => $this->input->post('email_address'),
);
$this->pals_model->insert($data);
redirect(base_url('contacts'));
}
}
public function edit($id) {
$this->load->model('cities_model');
$header['title'] = 'Edit Contact';
$data['cities'] = $this->cities_model->get_all();
$data['pal'] = $this->pals_model->get_by_id($id);
$this->load->view('header', $header);
$this->load->view('contacts/edit', $data);
$this->load->view('footer');
}
public function update($id) {
$rules = array(
array(
'field' => 'contact_name',
'label' => 'Contact Name',
'rules' => 'required'
),
array(
'field' => 'contact_number',
'label' => 'Contact Number',
'rules' => 'required',
'errors' => array(
'required' => 'You must provide a %s.',
),
),
array(
'field' => 'email_address',
'label' => 'Email Address',
'rules' => 'required'
),
array(
'field' => 'city_id',
'label' => 'City',
'rules' => 'required'
)
);
$this->form_validation->set_rules($rules);
if ($this->form_validation->run() == FALSE) {
$this->load->model('cities_model');
$header['title'] = 'Create Contact';
$data['cities'] = $this->cities_model->get_all();
$data['pal'] = $this->pals_model->get_by_id($id);
$this->load->view('header', $header);
$this->load->view('contacts/edit', $data);
$this->load->view('footer');
} else {
$data = array(
'city_id' => $this->input->post('city_id'),
'contact_name' => $this->input->post('contact_name'),
'contact_number' => $this->input->post('contact_number'),
'email_address' => $this->input->post('email_address'),
);
$this->pals_model->update($id, $data);
redirect(base_url('contacts'));
}
}
public function delete($id) {
$this->load->model('cities_model');
$header['title'] = 'Delete Contact';
$data['cities'] = $this->cities_model->get_all();
$data['pal'] = $this->pals_model->get_by_id($id);
$this->load->view('header',$header);
$this->load->view('contacts/delete',$data);
$this->load->view('footer');
}
public function destroy($id){
$this->pals_model->delete($id);
redirect(base_url('contacts'));
}
}
طرق عرض مدير جهات الاتصال
لقد نظرنا بالفعل إلى النماذج والتحقق من الصحة في CodeIgniter في البرامج التعليمية السابقة. سوف نستخدم الكود الذي قمنا بتطويره في الدروس السابقة. من أجل الاكتمال، سوف نقوم بإعادة إنتاج الكود الذي أنشأناه في الدروس السابقة.
آراء طلبنا ستكون على النحو التالي
يمكنك تنزيل الكود الخاص بالمشاهدات أعلاه من خلال النقر على الرابط أدناه
تنزيل عروض مدير جهات الاتصال CodeIgniter
ملخص
في هذا البرنامج التعليمي، سوف تتعلم كيفية إنشاء نماذج في كود إغنيترلقد استفدنا من الميراث في البرمجة الموجهة للكائنات لتعزيز إمكانية إعادة استخدام التعليمات البرمجية من خلال إنشاء نموذج أساسي ينفذ العمليات الأربع الرئيسية لقاعدة البيانات وهي الإدراج والقراءة والتحديث والحذف.
لقد قمنا بتوضيح المفاهيم باستخدام تطبيق عملي، وسنستمر في القيام بذلك في الدروس القادمة من خلال إضافة المزيد من الوظائف إلى التطبيق.


