Zend_Db_Table_RowВведениеZend_Db_Table_Row является классом, содержащим отдельную строку объекта Zend_Db_Table. Когда вы производите запрос через класс таблицы, результат возвращается в виде набора объектов Zend_Db_Table_Row. Вы можете также использовать этот объект для создания новых строк и их добавления в таблицу БД. Zend_Db_Table_Row является реализацией паттерна » Row Data Gateway. Извлечение строки
Zend_Db_Table_Abstract предоставляет методы Example #1 Пример извлечения строки
Объект Zend_Db_Table_Rowset содержит коллекцию объектов Zend_Db_Table_Row. Для получения более подробной информации читайте Zend_Db_Table_Rowset. Example #2 Пример получения строки из набора строк
Чтение значений столбцов из строкиZend_Db_Table_Row_Abstract предоставляет методы-аксессоры, благодаря которым можно ссылаться на столбцы в строке как на свойства объекта. Example #3 Пример чтения столбца из строки
Получение данных строки в виде массива
Вы можете получать данные строки, используя метод
Example #4 Пример использования метода toArray()
Массив, возвращаемый методом Извлечение данных из связанных таблицКласс Zend_Db_Table_Row_Abstract предоставляет методы для извлечения строк и наборов строк из связанных таблиц. Читайте Связи между таблицами Zend_Db_Table для получения более подробной информации о связях между таблицами. Редактирование строк в БДИзменение значений столбцов в строкеИспользуя аксессоры столбцов, вы можете устанавливать значения отдельных столбцов по аналогии с чтением, т.е. так же, как если бы они были свойствами объекта.
Использование аксессоров столбцов для установки значений
изменяет значения столбцов в данном объекте строки, но
эти изменения еще не фиксируются в БД. Вы можете произвести
фиксацию через метод Example #5 Пример изменения значения столбца в строке
Вставка новой строки
Вы можете создавать новые строки для определенной таблицы с
помощью метода Example #6 Пример создания новой строки таблицы
Опциональный аргумент метода является ассоциативным массивом, через который вы можете заполнить поля новой строки. Example #7 Пример заполнения новой строки для таблицы
Изменение значений в нескольких столбцах
Zend_Db_Table_Row_Abstract предоставляет метод
Example #8 Пример использования метода setFromArray() для установки значений в новой строке
Удаление строки
Вы можете использовать метод Example #9 Пример удаления строки
Не нужно вызывать метод Сериализация и десериализация строкЧасто бывает удобным сохранять содержимое строки БД для последующего использования. Сериализацией называется действие по преобразованию объекта в форму, удобную для хранения в автономном хранилище (например, в файле). Объекты типа Zend_Db_Table_Row_Abstract доступны для сериализации. Сериализация объекта строки
Просто используйте функцию PHP Example #10 Пример сериализации объекта строки
Десериализация данных строки
Используйте функцию Внимание: объект строки возвращается без соединения. Вы можете читать объект Row и его свойства, но не можете изменять значения в строке или выполнять другие методы, требующие соединения с БД (например, запросы к связанным таблицам). Example #11 Пример десериализации объекта строки
Восстановление соединения для объекта строки
Вы можете восстановить соединение для строки, используя метод
Example #12 Пример восстановления соединения для строки
Расширение класса строкиZend_Db_Table_Row является используемым по умолчанию классом, который наследует от Zend_Db_Table_Row_Abstract. Вы можете определить свой собственный класс для экземпляров строк путем наследования от Zend_Db_Table_Row_Abstract. Для того, чтобы этот класс использовался для хранения результатов запросов к таблице, укажите его имя в защищенном свойстве $_rowClass класса таблицы или в массиве, передаваемом в качестве аргумента конструктору объекта таблицы. Example #13 Указание своего класса строки
Инициализация строки
Если при создании объекта строки требуется выполнять код,
реализующий логику приложения, то вы можете поместить этот код в
метод Example #14 Пример использования метода init() Определение собственной логики для добавления, обновления и удаления в Zend_Db_Table_Row
Класс строки вызывает защищенные методы
Если нужно выполнение собственной логики в определенной
таблице, и эта логика должна выполняться для каждой операции в
этой таблице, то разумным решением может быть реализация
собственной логики в методах Ниже приведены примеры случаев, в которых имеет смысл реализовать свою логику в классе строки вместо класса таблицы: Example #15 Пример собственной логики в классе строки Собственная логика может применяться не во всех случаях операций над определенной таблицей. Вы можете реализовать свою логику в классе строки и создавать экземпляр класса таблицы с указанием этого класса строки в качестве используемого. Иначе в таблице используется класс строки по умолчанию. Вам нужно, чтобы операции над данными в этой таблице журналировались через объект Zend_Log, но только если в конфигурации приложения включено это поведение.
Example #16 Пример класса строки, журналирующего добавляемые данные для нескольких таблиц Собственная логика может быть общей для нескольких таблиц. Вместо реализации одной и той же логики в каждом классе таблицы вы можете реализовать код этих действий в классе строки и использовать этот класс строки во всех ваших классах таблиц. В этом примере журналирующий код одинаков для всех классов таблиц.
Определение инфлекции в Zend_Db_Table_RowНекоторые разработчики предпочитают, чтобы имя класса таблицы соответствовало имени таблицы в СУРБД с применением преобразования, называемого инфлекцией. Классы Zend_Db по умолчанию не производят инфлекцию. Читайте Определение инфлекции в Zend_Db_Table для получения информации о причинах такого решения.
Если вы предпочитаете использовать инфлекцию, то должны сами
реализовать преобразование, переопределив метод
Example #17 Пример определения инфлекционного преобразования
Это позволяет использовать в аксессорах преобразованный
вариант имени столбца. Класс строки использует метод
Реализация функций для произведения инфлекционного преобразования возлагается на разработчика. Zend Framework не предоставляет для этих целей готовых функций.
|