JTable - работа с таблици с бази данни
Joomla! ни предоставя мощен абстрактен клас JTable; в същото време можем да изпълняваме всички основни функции при работа с масата. За всяка таблица, която искаме да използваме в класа JTable, трябва да създадем нов подклас.
При подкласиране JTable, трябва да се придържаме към някои правила. Тези правила ще ни позволят да интегрираме нашето разширение в рамката на Joomla.
И така, всеки подклас на JTable трябва да се намира в отделен файл в директорията на таблиците (в административната част на компонента). Името на класа, което трябва да бъде създадено, трябва да има префикс с таблица. Името на файла трябва да бъде в единствено число.
Нека използваме горната схема на таблицата, за да илюстрираме как да работим с класа JTable.
Класът трябва да носи името Table [Class name], например TableMyData и да се намира в директорията JPATH_COMPONENT_ADMINISTRATOR.DS.'tables'.DS.'mydata.php '. Първият път, когато използваме нашия клас, трябва да дефинираме глобални свойства. Глобалните свойства съответстват на полетата на таблицата и трябва да имат еднакви имена. Използваме тези свойства като буфер за съхраняване на отделни записи.
Второ, за да използваме метода JTable: getInstance (), трябва да дефинираме конструктор.
Трето, трябва да заменим метода check (). Този метод проверява съдържанието на буфера и връща булева стойност. Ако методът върне false, използвайте метода setError (), за да обясните грешката.
Сега, когато създадохме клас TableMyData, трябва да създадем екземпляр на обекта, използвайки статичния метод JTable: getInstance ().
Имайте предвид, че не свързваме mydata.php, а само директорията с таблици. Когато JTable започне да създава екземпляр на TableMyData върху обект, mydata.php се свързва автоматично.
CRUD (Create Read Update Delete) е общото име за основните задачи за управление на таблици.
Всички CRUD примери за $ table се отнасят до клас TableMyData, а $ id се отнася до идентификатора на записа, който обработваме в момента. В този пример ние създаваме нов запис; $ table - екземпляр на класа TableMyData.
Методът reset () изчиства нашия буфер и задава стойностите на всички свойства на стойностите им по подразбиране. Методът getNextOrder () определя следващия елемент в реда за влагане. Ако записът не съществува, той задава стойността 1.
Нека разгледаме отблизо нашия пример. Някои от полетата имаха стойност по подразбиране и след писане стойността на датата ще бъде празна. След стартиране на предишния пример, буферът $ table изглежда така:
След изпълнение на метода store () (запазване на записа), можем да го заредим:
Нашият буфер сега изглежда така:
Вместо да зареждаме запазения си запис, първоначално бихме могли да зададем стойностите по подразбиране правилно и не би трябвало да презареждаме записа.
Някои от стойностите по подразбиране обаче зависят от типа данни. Следователно трябва да заменим метода reset (). Например стойността check_out_time ще бъде $ db-> getNullDate (). Така че, за да заредите конкретен запис, използвайте метода:
За да актуализираме запис в буфер, можем да използваме два метода: първият е да заредим запис от базата данни, вторият е да зададем конкретни стойности за свойствата на буфера.
Този пример показва как да актуализирате запис:
Последното нещо, което ще разгледаме, е изтриването на запис:
Ако не посочим идентификационния номер в метода delete (), тогава идентификаторът ще бъде взет от буфера.
Ако нашият запис в таблицата има свързани записи с други таблици, тогава първо трябва да проверим с метода canDelete (). Този метод има само един параметър, който е двумерен масив. В масива трябва да има няколко ключа - idfield, name, joinfield и label. idfield е името на първичния ключ в съответната таблица. name е името на самата таблица. joinfield е името на външния ключ на съответната таблица. label е описание на връзката между таблици, за показване на съобщение за грешка, ако не е намерена връзка.
Представете си, че има друга таблица #__myextention_children. Тази таблица има първичен ключ, Childid и външен ключ, първичен, който се отнася до записа в таблицата #__myextension_mydata. В този пример ще проверим дали има зависимост между записите на таблицата #__myextension_children и #__myextension_mydata, преди да изтрием записа от таблицата #__myextension_mydata.
Можем да дефинираме повече от една връзка между таблици. Да приемем, че таблицата #__myextension_illegitimate_children също съществува:
Управление на запазени полета
Нашата таблица съдържа всички запазени полета, които можем да манипулираме, използвайки методите на класа JTable. Нека помислим за управлението на тези полета по-подробно.
Издателство
Можете да увеличите записа, като използвате метода hit (). Например ще зададем идентификационния номер на записа и увеличението.
Също така можем да посочим идентификатора, който ни е необходим, в параметъра на метода hit (). Но трябва да помним, че това ще актуализира буфера.
Проверка
Преди да започнем да заключваме записите си, трябва да се уверим, че записът вече не е заключен. Това е необходимо, за да се предотврати едновременното редактиране на един и същи запис от множество потребители. За целта можем да използваме метода isCheckOut (). В този пример проверяваме:
След това блокираме записа за потребителя:
За да обработим записа, използваме следния метод:
Не забравяйте, че тези методи могат да се използват само за влезли потребители.
Когато искаме да подредим елементи в определен ред, JTable ни предоставя набор от методи за това. Първият метод, който разгледахме, ще бъде reorder (). Този метод коригира грешки в реда на записите в таблицата.
В по-сложни таблици записите обикновено се разделят на групи и за това трябва да добавите допълнителен параметър към метода reorder (). Да приемем, че имаме групово поле в нашата таблица. В този пример ще поръчаме записите в група 1.
Имайте предвид, че получаваме обекта на базата данни не от JFactory, а от таблица!
Преди сме използвали метода getNextOrder (). Методът ни дава следващата позиция в реда за поръчка. Както при reorder (), ние имаме възможността да дефинираме групи. Например получаваме следващия номер на поръчка за група 1.
И последният метод е move (). Необходимо е записът да се премести с една позиция нагоре или надолу. Нека преместим записа нагоре в примера.
$ table-> load ($ id); $ таблица-> преместване (-1); Отново имаме опцията да посочим групи. Нека покажем това с пример:
Поле за параметри на параметри
Класът JTable няма специални методи за манипулиране на INI параметри. JTable буфер е за съхраняване на RAW данни за параметри, които трябва да бъдат запазени.
Класът JParameter се използва за обработка на полето на параметъра. Първо, трябва да създадем нов обект JParameter и ако имаме достъп до съществуващ запис, анализирайте го.
Класът JParameter разширява класа JRegistry. В този пример ще разгледаме как можете да анализирате параметрите с помощта на класа JParameter.
След като имаме достъп до параметрите, можем да ги променим, като използваме методите get () и set ().
Също така можем да получим данни като INI низ, използвайки метода toString ().
Можем сами да създадем и параметърния низ. За да направите това, трябва да посочите самите параметри и пътя към XML файла на манифеста.
За да покажете параметрите на екрана под формата на формуляр, използвайте метода render ().
Когато съхранявате дата, е много важно тя да е в правилния формат. За MySql трябва да съхраним датата като ГГГГ-ММ-ДД ЧЧ: ММ: СС. Най-лесният начин да направите това е да използвате класа JDate. В този клас се нуждаем от метода toMySQL (), за да преобразуваме датата в правилната форма.
$ myDate е UNIX дата (клеймо за време).
- Изпълнението на работата на селищно-информационния център ще протича поетапно
- Външни хемороиди как да се лекува това заболяване, какво го причинява и какви са неговите симптоми
- Хипноза и РАБОТА С ЦЕЛ
- Архивиране на база данни на SprintHost, Архивиране на SprintHost хостинг
- Главният актьор от филма "Страстите Христови" даде интервю