ЦодеИгнитер Рад са базом података
У претходном упутству смо покрили основе активног записа ЦодеИгнитер и како убацити, ажурирати, избрисати и читати записе из базе података. У овом упутству ћемо створити моделе база података и користити обрасце за креирање и ажурирање записа базе података. ако сте потпуно нови у раду са базама података у ЦодеИгнитеру, саветовали сте да прочитате претходни водич
Конфигурација базе података
Започећемо са израдом базе података туториал пројеката. Направићемо једноставну базу података за управљање подацима о контактима. Направићемо једноставну базу података са две (2) табеле која именује пријатеље и градове у којима живе. Однос између пријатеља и градова је један на један са ИД-ом у градовима као примарним кључем и цити_ид као страним кључем у табелама са пријатељима. .
Покрените следеће скрипте да бисте креирали базу података:
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`)) ;
Модели базе података ЦодеИгнитер
Сада ћемо створити моделе за нашу базу података. Модел је М део МВЦ-а. Модел се бави приступом подацима, манипулацијом подацима и пословном логиком.
У ЦодеИгнитеру сваки модел мора да дефинише методе које ће подржати. Уместо понављања истог кода у сваком моделу, искористићемо наследство у објектно оријентисаном програмирању и креираћемо класу надређеног модела која ће дефинисати основне методе које желимо да наши модели подржавају.
Табела у наставку приказује методе које ћемо дефинисати и начин приступа подацима.
С / Н | Метод | Опис |
1 | __конструисати | Дефинише метод конструктора који позива родитељски метод конструктора |
2 | узми све | Дохваћа сва поља и записе из базе података без икаквих услова |
3 | гет_би_ид | Дохваћа један ред из базе података помоћу примарног кључа типа ИНТ названог ид |
4 | гет_вхере | Дохваћа сва поља из базе података на основу заснованих на критеријумима |
5 | уметак | Убацује нови запис у базу података |
6 | ажурирање | Ажурира постојећи запис базе података на основу примарног кључа типа ИНТ названог ид |
7 | избрисати | Брише постојећи запис из базе података на основу примарног кључа типа ИНТ названог ид |
Следећа слика приказује дијаграм класа и како су дететови модели Палс анд Цитиес повезани са матичним моделом БасеМодел.
Направићемо два модела како је описано на горњој слици
Направите нову класу БасеМодел у апликацији / моделс / БасеМодел.пхп
Додајте следећи код
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);}}
ОВДЕ,
- заштићен $ табле = ''; дефинише заштићену променљиву названу табела. Ово ће попунити одговарајућа подређена класа да би се назначило са којом табелом треба да комуницирају наше методе класе основног модела.
- јавна функција __цонструцт () {…} дефинише метод конструктора и извршава метод конструктора надређене класе ЦИ_Модел.
- гет_алл () {…} користи библиотеку базе података и вредност променљиве $ табле за покретање СЕЛЕЦТ упита према нашој бази података.
- гет_би_ид ($ ид) {…} дефинише метод за преузимање једног реда из базе података и прихвата параметар $ ид који би требао бити ИНТ типа података.
- гет_вхере ($ вхере) {…} дефинише методу гет која вам омогућава да поставите клаузулу вхере.
- инсерт ($ дата) {…} дефинише методу уметања и прихвата параметар низа $ дата који садржи вредности које се записују у базу података.
- упдате ($ ид, $ дата) {…} дефинише метод ажурирања и прихвата параметар низа $ дата који садржи вредности које треба ажурирати у бази података.
- делете ($ ид) {…} дефинише методу брисања која прихвата параметар $ ид који би требао бити типа података ИНТ.
сада када смо завршили са родитељском класом модела, дозволимо да креирамо наше Палс моделе
Направите нову датотеку у апплицатион / моделс / Палс.пхп
Додајте следећи код
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();}}
ОВДЕ,
- класа Палс проширује БасеМодел {…} проширује родитељски модел БасеМодел и аутоматски чини све методе дефинисане у БасеМодел приступом подређеној класи.
- заштићен $ табле = 'пријатељи'; дефинише име табеле повезано са нашим надређеним моделом
- __цонструцт () {…} иницијализује надређени конструктор
- јавна функција гет_би_ид ($ ид) {…} поништава гет_би_ид да би обезбедила прилагођену имплементацију специфичну за Палс модел. Упит за гет_би_ид користи спој за преузимање назива града из табеле градова
- јавна функција гет_алл () {…} замењује методу гет_алл за примену упита за придруживање између табела и градова
Направите нову датотеку у апликацији / моделс / Цитиес.пхп
ОВДЕ,
- заштићен $ табле = 'градови'; дефинише табелу базе података модела.
Као што видите из горе датог кода, наслеђивање нам штеди пуно времена приликом рада са моделима у ЦодеИгнитеру. У следећем одељку ћемо научити
Контролери менаџера контаката
Сада када смо креирали моделе, креирајмо контролере за нашу апликацију. Имаћемо два контролора, а то су Контакти и Градови
Кренимо од градова
Направите нову датотеку Цитиес.пхп у директоријуму апликација / контролора
Додајте следећи код
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'));}}
ОВДЕ,
- Горњи код примењује све методе потребне за креирање, ажурирање, брисање и читање редова из базе података.
Направите другу датотеку Цонтацтс.пхп у апликацији / контролерима
Додајте следећи код
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'));}}
Прикази менаџера контаката
Обрасце и проверу ваљаности већ смо гледали у ЦодеИгнитеру у претходним водичима. Користићемо код који смо развили у претходним водичима. Ради потпуности, репродуковаћемо код који смо креирали у претходним водичима.
Ставови наше апликације биће следећи
Можете преузети код за горње приказе кликом на доњу везу
ЦодеИгнитер Виевс Манагер Виевс Виевс Довнлоад
Резиме
У овом упутству ћете научити како да креирате моделе у ЦодеИгнитеру. Искористили смо наследство у објектно оријентисаном програмирању да бисмо промовисали поновну употребу кода стварајући основни модел који имплементира четири главне операције базе података уметање, читање, ажурирање и брисање.
Показали смо концепте користећи практичну апликацију и то ћемо чинити у следећим водичима додавањем додатне функционалности апликацији.