Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: удалять объект и запись в базе
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » удалять объект и запись в базе

Страниц (1): [1]
 

1. DlTA - 24 Ноября, 2016 - 12:26:25 - перейти к сообщению
у меня классы селекторы

PHP:
скопировать код в буфер обмена
  1. class ClassElement($id);
  2.  
  3. $itemObj = new ClassElement(1); // создаем объект привязанный к базе
  4. $itemObj->getColum(); //  получаем данные из базы


и вот возник вопрос удаление записи из базы

нужно удалить объект unset($itemObj), но и саму запись из базы
и желательно что это понятно и правильно.

есть идеи??
2. Строитель - 24 Ноября, 2016 - 13:00:28 - перейти к сообщению
DlTA пишет:
есть идеи?
Дописать в класс метод __destruct(), в котором и выполнять удаление записи из базы, при вызове unset($itemObj).
3. DlTA - 24 Ноября, 2016 - 13:02:53 - перейти к сообщению
Строитель пишет:
Дописать в класс метод __destruct(), в котором и выполнять удаление записи из базы, при вызове unset($itemObj).

__destruct() будет вызываться каждый раз при закрывании приложения, мне так не надо.
(Добавление)
сейчас создал статический метод для удаление объекта и записи в базе
типа
PHP:
скопировать код в буфер обмена
  1. /**
  2. * удаляет запись из базы и объект
  3. */
  4. static public function deletItem(CModelDB $item){
  5.  
  6.         CDB::query("DELETE FROM `{$item->tableName}`  WHERE `id` = '{$item->getId()}'");
  7.  
  8.         $item->data = array();
  9.         $item->id = null;
  10.         //$this->repo = null;
  11.  
  12.         unset($item);
  13. }


но из за того что деструктор вызывается неизвестно когда, пришлось попутно закрыть все данные в классе: "$item->data = array(); $item->id = null;"
4. Строитель - 24 Ноября, 2016 - 13:15:36 - перейти к сообщению
DlTA пишет:
__destruct() будет вызываться каждый раз при закрывании приложения, мне так не надо.
У меня не много опыта в ооп, поэтому мне приходит только такая мысль (пример) :
PHP:
скопировать код в буфер обмена
  1. // После удаления объекта
  2. unset($itemObj);
  3. // проверить его существование
  4. if (!is_object($itemObj)) {
  5.     // и выполнить удаление записи
  6.     delRec();
  7. }
  8.  
  9. function delRec() {
  10.     echo 'удаление записи из базы';
  11. }

(Добавление)
DlTA пишет:
сейчас создал статический метод для удаление объекта и записи в базе
Ваш вариант выглядит лучше Радость

 

Powered by ExBB FM 1.0 RC1