У цій статті хочу розглянути роботу з класом 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 що б встановити свої умови вносять даних, наприклад якщо у вас не вказана дата в запису, то можемо автоматично вказати що б записувалася дата створення запису: