Активни запис Цодеигнитер: Уметање, одабир, ажурирање, брисање

Преглед садржаја:

Anonim

Подаци су крвна линија већине апликација. Подаци треба да се чувају на такав начин да се могу даље анализирати како би се добили увиди и олакшале пословне одлуке. Подаци се обично чувају у бази података. Међу главним бригама приликом интеракције са базом података су сигурност, једноставност приступа и имплементације структурираног језика упита (СКЛ) специфичне за добављача базе података.

Активни запис је образац дизајна који олакшава интеракцију са базом података на лак, сигуран и елоквентан начин.

Активни запис има следеће предности

  • Уметање, ажурирање и брисање записа помоћу ланаца активних записа једноставних метода
  • Доставља кориснички унос на сигуран начин користећи параметре
  • Омогућава вам рад са вишеструким механизмима база података, као што су МиСКЛ, СКЛ Сервер итд., Без преписивања апликационог кода
  • ЦодеИгнитер користи управљачке програме специфичне за сваки механизам базе података у позадини.

У овом упутству ћете научити:

  • Како се користи активни запис: Пример
  • Конфигурација базе података ЦодеИгнитер
  • ЦодеИгнитер Уметните активни запис
  • ЦодеИгнитер Изаберите Ацтиве Рецорд
  • ЦодеИгнитер Ажурирање активног записа
  • ЦодеИгнитер Избриши активни запис

Како се користи активни запис: Пример

У овом упутству ћемо размотрити базу података уџбеника. Имаћемо две табеле, једну са поруџбинама, другу са детаљима.

Овај водич претпоставља да имате инсталирану и покренуту МиСКЛ базу података.

Покрените следеће скрипте да бисте креирали базу података туторијала:

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;

Горњи код креира базу података под називом ци_ацтиве_рецорд и креира две табеле и то налоге и детаље о налогу. Однос између две табеле дефинисан је ИД-ом ступца у редоследима и ид-ом налога у табели_детајлови налога.

Конфигурација базе података ЦодеИгнитер

Сада ћемо конфигурисати нашу апликацију тако да може да комуницира са овом базом података.

Отворите датотеку за конфигурацију базе података која се налази у апликацији / цонфиг / датабасе.пхп

пронађите следеће редове у конфигурационој датотеци

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

Ажурирајте горњи код на следећи

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

Напомена: мораћете да замените корисничко име и лозинку онима који одговарају вашој конфигурацији МиСКЛ-а.

Поред детаља о конфигурацији базе података, такође морамо да кажемо ЦодеИгнитеру да учита библиотеку базе података када се учита

Корак 1) Отворите следећу датотеку апплицатион / цонфиг / аутолоад.пхп

Корак 2) Пронађите библиотеке кључева низа $ аутолоад и учитајте библиотеку базе података као што је приказано доле

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

ОВДЕ,

  • Горњи код учитава библиотеку базе података када се апликација покреће

ЦодеИгнитер Уметните активни запис

За потребе тестирања створићемо контролер и дефинисане руте које ћемо користити за интеракцију са нашом апликацијом путем активног записа.

Направите нову апликацију за датотеке / контролере / АцтивеРецордЦонтроллер.пхп

Додајте следећи код у АцтивеРецордЦонтроллер.пхп

 '2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}

ОВДЕ,

  • $ дата = [...] дефинише податке променљиве низа који користе табеле базе података као кључеве низа и додељује им вредности
  • $ тхис-> дб-> инсерт ('поруџбине', $ података); позива методу уметања библиотеке базе података, прослеђује редослед имена табеле и променљиву низа $ дата као параметар. Овај ред генерише СКЛ ИНСЕРТ израз користећи кључеве низа као имена поља и вредности низа као вредности које се убацују у базу података.

Сада када смо успешно креирали методу контролера за активни запис, сада ћемо морати створити руту коју ћемо позвати за извршавање методе контролера.

Сада отворите роутес.пхп у апликацији / цонфиг / роутес.пхп

додајте следећи ред на руте

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

ОВДЕ,

  • Дефинишемо руту ар / инсерт која позива сторе_ордер АцтивеРецордЦонтроллер-а.

Покренимо сада веб сервер да тестирамо нашу методу.

Покрените следећу команду да бисте покренули уграђени сервер за ПХП

cd C:\Sites\ci-appphp -S localhost:3000

ОВДЕ,

  • Горњи претраживач наредби на командној линији и покрените уграђени сервер на порту 3000.

Учитајте следећи УРЛ у свој прегледач

хттп: // лоцалхост: 3000 / ар / инсерт

Добићете следеће резултате

order has successfully been created

Отворите МиСКЛ базу података водича и проверите табелу поруџбина

Моћи ћете да направите нови ред као што је приказано на слици испод

ЦодеИгнитер Изаберите Ацтиве Рецорд

У овом одељку видећемо како да читамо записе које имамо у бази података и приказујемо их у веб прегледачу као неуређену листу

Додајте следећу методу у АцтивеРецордЦонтроллер

public function index() {$query = $this->db->get('orders');echo "

Orders Listing

";echo "
    ";foreach ($query->result() as $row) {echo "
  • $row->customer_name
  • ";}echo "
";}

ОВДЕ,

  • $ куери = $ тхис-> дб-> гет ('поруџбине'); покреће упит за одабир према табели поруџбина одабиром свих поља
  • ецхо "<х4> Списак поруџбина "; приказује ХТМЛ наслов величине 3
  • ецхо "<ул>"; исписује почетну ознаку за неуређену ХТМЛ листу
  • фореацх ($ куери-> ресулт () као $ ров) {…} користио је фор петљу за петљу кроз резултате враћене из базе података. ецхо "<ли> $ ров-> цустомер_наме "; исписује име_купац из базе података

Пре него што учитате следећу УРЛ адресу, у базу података можете учитати још неколико записа.

Хајде сада да дефинишемо руту за СЕЛЕЦТ упит

Отворите табелу апплицатион / цонфиг / роутес.пхп

Додајте следећу руту

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

ОВДЕ,

  • Рута ар указује на метод индекса класе АцтивеРецордЦонтроллер. Ово је подразумевано, зато нисмо навели метод индекса као што сте то урадили за руту која убацује записе

Под претпоставком да је веб сервер већ покренут, учитајте следећу УРЛ адресу

хттп: // лоцалхост: 3000 / ар

У вашем веб прегледачу требало би да видите резултате који су веома слични следећим

ЦодеИгнитер Ажурирање активног записа

У овом одељку ћемо говорити о томе како користити активни запис за ажурирање базе података. Рецимо да желимо да ажурирамо име купца Јое Тхомас на Јое.

Додајте следећу методу у класу АцтивеРецордЦонтроллер

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

ОВДЕ,

  • $ дата = […] дефинише поља и вредности које желимо да ажурирамо у табели базе података
  • $ тхис-> дб-> вхере ('ид', 1); поставља клаузулу вхере упита за ажурирање
  • $ тхис-> дб-> упдате ('поруџбине', $ подаци); генерише упит за СКЛ ажурирање и извршава га према нашој бази података.

Горњи код ће произвести следећи СКЛ израз

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

Ажурирајмо сада роуте.пхп апликацију / цонфиг / роутес.пхп

Додајте следећу руту

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

Сачувајте промене

Учитајте следећу УРЛ адресу у веб прегледач

Хајде сада да прикажемо записе базе података и видимо да ли су промене погођене.

Као што видите из горе дате слике, први запис је ажуриран са Јое Тхомас на Јое.

ЦодеИгнитер Избриши активни запис

Сада ћемо избрисати запис из базе података. Избрисаћемо запис са ид-ом 3.

Додајте следећу методу у АцтивеРецордЦонтроллер

public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}

ОВДЕ,

  • $ тхис-> дб-> вхере ('ид', 1); поставља клаузулу вхере
  • $ тхис-> дб-> делете ('поруџбине'); брише ред базе података у табели налога на основу критеријума постављених помоћу клаузуле вхере.

Да бисте извршили горњи код, учитајте следећу УРЛ адресу у наш веб прегледач

хттп: // лоцалхост: 3000 / ар / делете

Резиме

У овом упутству сте научили како се ради са активним записом за уметање, ажурирање, брисање и одабир записа из базе података. Радили смо са статичким вредностима да бисмо креирали записе, ажурирали и брисали. У следећем упутству створићемо кориснички интерфејс који корисник може користити за динамичко креирање записа у бази података.