2010-09-01 2 views
0

Возможно ли запустить запрос SQL (Zend_Db_Select) к объекту Zend_Db_Table_Row? Как насчет объединения двух объектов Zend_Db_Table_Row?Как запросить Zend_Db_Table_Row

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

Я надеюсь, что это ясно. Если нет, просьба уточнить.

Edit:

Чтобы уточнить, объекты находятся в памяти. Я уже извлек их из базы данных.

Причина этого заключается в том:

Есть тысячи записей в таблице «войти». Мне нужно реагировать на них в зависимости от нескольких критериев, определенных пользователем. При обработке этих журналов важно время. Там для нового процесса разветвляется, чтобы это произошло своевременно. Новый процесс разветвляется для каждого журнала. Следовательно, объекты уже существуют в памяти.

+0

Помогите нам помочь вам, разместив код, который у вас есть. Очень сложно угадать, что вам нужно. – Iznogood

+0

Вот код, который у меня есть: myfunction ($ obj1, $ obj2) { print_r ($ obj1); print_r ($ obj2); } Как это поможет. У меня есть два объекта Zend_Db_Table_Row - в памяти. Вот и все. Я хочу запросить два объекта. Если это невозможно, мне просто нужно -> toArray() и использовать кучу операторов if. Yuck ... –

+0

Вы знакомы с 'JOIN's? Это поможет, если вы разместите свой код и структуру своей базы данных. –

ответ

0

The Zend_Db_Table_Row объектов, которые не являются строки, они не могут быть запрошены, поскольку они больше не находится в базе данных, они находятся в памяти как часть ZF. Они представляют собой набор данных в памяти, обрабатываемых PHP - они больше не имеют ничего общего с базой данных, поэтому они не могут быть запрошены, как вы предлагаете.

Вы должны использовать findDependentRowset() в ваших моделях или Zend_Db_Table класса для определения отношений между таблицами, ZF будет писать присоединиться заявлениями для вас JOIN таблиц вместе, соединенные данные будут в ваших Zend_Db_Table_Row объектов после того, как вы запрашиваете datbase.

Или вы можете использовать join(), как указано ниже: here - JOIN две или более таблицы вместе. Вам нужно сделать соединения на выбранном объекте, который вы запрашиваете. Для получения необходимых данных вам необходимо использовать возможности механизма базы данных. Выполнение этого в PHP намного медленнее, чем использование datbase.

+0

Это тот ответ, который я искал. Вы не можете запросить объект Zend_Db_Table_Row. Я думал, что может быть какой-то механизм денди Zend для этого, если посмотреть на объект Zend_Db_Table_Row. Наверное, это было принятие желаемого за действительное. Объект уже находится в памяти. Я больше не буду запрашивать базу данных. Я уже прошел вперед с запутанной структурой. Неплохо - 5 утверждений. –

1

Рассмотрят определение отношений и последующий вызов findDependentRowset() на объекте Row:

http://framework.zend.com/manual/en/zend.db.table.relationships.html

+0

У меня уже есть объекты в памяти. Смогу ли я сделать запрос против них? –

+1

Предполагая, что вы можете определить отношения в своих классах Zend_Db_Table и вернуть их обратно в память, yup. – Tim

+0

И как бы я это сделал? $ Rowobj-> FetchRow ($ выбор); ? –

Смежные вопросы