2010-08-08 2 views
1

я в FetchRow, что делается, как это:
Zend Db Таблица Аннотация FetchRow добавлять новые объекты к нему

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

Done, я хотел бы, чтобы извлечь все файлы из таблицы файлов, как это:

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

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

Если я:

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

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

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

ответ

0

попробовать

$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); 
+0

Я пробовал, но это не сработало, я думаю, что возвращаемые значения являются объектами, а абстрактная абстрактная абстрактная абстрактная абстрактная абстрактная запись может добавлять новые значения объектов. наилучшее отношение –

+0

Вы не можете это сделать, потому что набор строк должен иметь свои данные гидратированными ... это не происходит, пока вы не пробиваете результаты (по крайней мере, это не последний раз, когда я использовал Zend_Db в 1.7). Чтобы сделать то, что вы описали, вам нужно будет вручную прокрутить оба этих набора строк и назначить их массиву, или если все данные были ранее доступны, вы можете вызвать «toArray» в объекте rowset и получить массив, но это также превратит объекты строки в массивы. – prodigitalson

+0

Да, я делаю это. Спасибо
$ row = $ db-> fetchRow ($ dado) -> toArray();
$ fotos ['fotos'] = $ db-> fetchRow ($ dado) -> findDependentRowset ('Fotos') -> toArray();
$ data = (object) array_merge ($ row, $ fotos); Спасибо и с наилучшими пожеланиями. –

1

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

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

+1

Не знаю, как это сделать, я использую Зенд таблицы БД аннотацию и я отношение, я могу назвать второй запрос, выполнив $ row-> findDependentRowset ('Фотографии'); Наилучшее отношение. –

+0

Не могли бы вы обновить свой вопрос с помощью схемы для таблиц, о которых мы говорим, и/или имен таблиц и строк? Я не знал, что у вас есть зависимый набор строк, хотя все было в одной таблице, так как вы сформулировали свой вопрос и имя класса, которое вы указали. – prodigitalson

+0

Спасибо, я могу решить его, превратить все в массив, а затем объединить, чем я повернул его, чтобы объект снова. Спасибо за ваши ответы, наилучшее отношение. –