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 (). Така че, за да заредите конкретен запис, използвайте метода:

За да актуализираме запис в буфер, можем да използваме два метода: първият е да заредим запис от базата данни, вторият е да зададем конкретни стойности за свойствата на буфера.

Този пример показва как да актуализирате запис: