Клас jtable в joomla

У цій статті хочу розглянути роботу з класом JTable який реалізує шаблон проектування Active Record. і є популярним способом доступу до бази даних в ООП стилі!
Кожен такий клас представляє таблицю в нашій базі даних, кожен об'єкт такого класу є рядком в цій таблиці

Наприклад використовуючи такий код ми можемо вставити в таблицю #__content дані:

Клас з табличкою повинен мати ім'я Table имя_файла і успадковуватися від класу JTable
Тобто припустимо якщо ми створимо файл content.php то клас повинен мати такий вигляд:

Увага! в Joomla 3+ не потрібно використовувати директиву jimport ( 'joomla.database.table');

Далі ми повинні в класі описати конструктор класу в якому буде вказано з якою табличкою ми працюємо і унікальне поле з атрибутом auto_increment (зазвичай це id)

Що б отримати екземпляр класу TableContent в будь-якому місці yнашей моделі написати досить написати:

Які методи ми можемо використовувати для роботи з об'єктом бази даних?

По-перше ми в об'єкт $ table можемо завантажити рядок з будь-яким ідентифікатором який є в таблиці #__content:

Для того що б створити якусь запис ми повинні викликати такий код:

Метод store повертає true якщо збереження в табличку записи успішно! і false при помилці збереження!

Після вставки даних в табличку в поле id нашого об'єкта запишеться id поточного рядка в таблиці. Це зручно якщо ви хочете вставити якісь дані в іншу табличку і вам потрібно в якомусь полі другий табличці вказати ідентифікатор першої таблиці!

Притому якщо ми хочемо не створити нове поле, а оновити вже створене поле то нам досить вказати ідентифікатор рядка в табличці в якому виробляти оновлення:

Для видалення будь то рядки з таблички ви можете використовувати такий код:

Так само в цьому класі є метод для автоматичного розміщення елементів по полях нашої таблиці:

Увага! Використання $ _REQUEST не бажано в ваших проектах через можливість внести дані які можуть здійснити ту чи іншу уразливість! Для того що б убезпечити користувальницької введення використовуйте клас JInput

У класі нашої таблички ви можете перевизначити метод bind що б встановити свої умови вносять даних, наприклад якщо у вас не вказана дата в запису, то можемо автоматично вказати що б записувалася дата створення запису: