Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

nyanorm [2019/08/05 11:59]
nightfly
nyanorm [2019/11/21 13:26] (текущий)
nightfly [О исключениях]
Строка 139: Строка 139:
  
 ===== Кумулятивная структура data() ===== ===== Кумулятивная структура data() =====
-......+ 
 +Кумулятивная структура **data** предназначена для хранения данных которые будут в дальнейшем использованы при вызове методов **create()** или **save()**Собственно имеет она только два параметра, а именно **field** и **value**Довольно не трудно догадаться как ее использовать: 
 + 
 +<code php> 
 +$object->data('somefield', 'new value'); 
 +$object->data('anotherfield', 'тоже какие-то данные'); 
 +</code>
  
 ===== Создание и изменение записей ===== ===== Создание и изменение записей =====
-......+ 
 +Помните кумулятивную структуру **data()**?  Она нам потребуется для создания записей в модели либо изменения существующихДавайте создадим новую запись приблизительно для такой таблички: 
 + 
 +<code sql> 
 +CREATE TABLE IF NOT EXISTS `someobjects` ( 
 +  `id` int(11) NOT NULL AUTO_INCREMENT, 
 +  `name` varchar(255) NOT NULL, 
 +  `text` text, 
 +  PRIMARY KEY (`id`) 
 +) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 
 +</code> 
 + 
 +Все очень прямолинейно. 
 + 
 +<code php> 
 +$object = new nya_someobjects(); 
 +$object->data('name', 'а это типа имя'); 
 +$object->data('text', 'это типа текст записи'); 
 +$object->create(); 
 +</code> 
 + 
 +Заметьте, мы не указывали ручками NULL для автоинкрементного поля id, как так? А так, что у метода **create()** по умолчанию установлен параметр $autoAiId=true делающий это неявноЕсли в вашей табличке нету автоинкрементного поля `id` или другого подобного primary key, вы должны установить этот параметр в falseСобственно имя поля главного ключа таблички вы всегда можете переназначить при помощи наследованияОн содержится в протектед проперти **defaultPk**  
 +\\ 
 +\\ 
 +Окей, запись создать мы создали, а как получить ее id? Для этого есть удобный метод **getLastId()** получающий последний **defaultPk** из таблички. 
 +Вот как это работает: 
 +<code php> 
 +deb($object->getLastId()); // ой... возвращает 15 
 +</code> 
 + 
 +Окей, допустим мы внезапно захотели теперь изменить все или какое-то из полей в этой табличке. как быть? Все точно так-же как и с **create()** только при помощи **save()** но теперь нам еще понадобиться **where()**. Допустим мы будем редактировать последнюю запись в этой табличке: 
 +<code php> 
 +$idToModify=$object->getLastId(); 
 +$object->data('text', 'воу, это же новое значение для text!'); 
 +$object->where('id', '=', $idToModify); 
 +$object->save(); 
 +</code> 
  
 ===== Включение режима отладки ===== ===== Включение режима отладки =====
Строка 166: Строка 209:
   * **MEOW_WHERE_STRUCT_EMPTY** - кумулятивная структура where пуста. А она нужна. Очень.   * **MEOW_WHERE_STRUCT_EMPTY** - кумулятивная структура where пуста. А она нужна. Очень.
   * **MEOW_DATA_STRUCT_EMPTY** - кумулятивная структура data пуста. И она тоже кому-то очень нужна.   * **MEOW_DATA_STRUCT_EMPTY** - кумулятивная структура data пуста. И она тоже кому-то очень нужна.
 +  * **MEOW_JOIN_WRONG_TYPE** - неверный тип JOIN. Допустимы только INNER, LEFT, RIGHT. 
 +  * **MEOW_NO_FIELD_NAME** - не установлено обязательное имя поля.
  
 ===== Принципиальная схема ===== ===== Принципиальная схема =====
Строка 176: Строка 220:
  
 ===== Что еще? ===== ===== Что еще? =====
-**Блин.. столько писанины. Никто же не поможет, правда?** Короче вот пока что вам практические примеры использования этого в виде хеллоуворлда. Но так как я хеллоуворлды писать не умею, вот вам тудушка. Как говорят умные люди - не умеешь писать хеллоуворлды - пиши тудушки.+Короче вот пока что вам практические примеры использования этого в виде хеллоуворлда. Но так как я хеллоуворлды писать не умею, вот вам тудушка. Как говорят умные люди - не умеешь писать хеллоуворлды - пиши тудушки.
  
 Работать наш TODO-list будет на следующей табличке в БД: Работать наш TODO-list будет на следующей табличке в БД:
nyanorm.1564995550.txt.gz · Последние изменения: 2019/08/05 11:59 — nightfly
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki