Zend Db Table Abstract fetchRow добавляет новые объекты к нему - PullRequest
1 голос
/ 08 августа 2010

У меня есть fetchRow, это делается так:

$db = new Database();
$data = $db->fetchRow($db->select()->where('id = ?',$id));

Готово, я хотел бы получить все файлы из таблицы файлов, например:

$files = new Database();
$photos = $files->fetchAll($files->select()->where('id = ?',$data->id));

Но он возвращает два разных объекта, как я могу добавить его только к одному объекту?

Если я сделаю:

$this->view->photos = $photos;
$this->view->data = $data;

Это работает, но как я могу объединить фотографиивнутри данных?

Спасибо и наилучшими пожеланиями.

Ответы [ 2 ]

1 голос
/ 08 августа 2010

Если ваша таблица представляет собой набор данных файлов разных типов, то вам нужно контролировать, как они гидратируются - т.е. какие объекты возвращаются из запроса. Для этого вам нужно создать собственный класс Rowset для таблицы и установить его в качестве свойства класса Database (при условии, что он Zend_Db_Table).

В этом классе набора строк вы изучите свойство строки как ее гидратированное, а затем выберите, какой класс использовать «Данные» или «Фото». Чтобы все было согласованно, вам также потребуется изменить класс таблицы, чтобы обрабатывать гидратацию отдельной записи (т. Е. С помощью метода find).

0 голосов
/ 08 августа 2010

1001 * попробовать *

$db = new Database();
$data = $db->fetchRow($db->select()->where('id = ?',$id));

$files = new Database();
$photos = $files->fetchAll($files->select()->where('id = ?',$data->id));



array_push( $photos, $data);
...