Получить зависимый набор строк из набора строк (не одной строки) в Zend Framework - PullRequest
1 голос
/ 07 февраля 2012

Мне интересно, могу ли я использовать Zend Framework для эффективного извлечения дополнительных зависимых строк, не прибегая к большому количеству пользовательского кода.Я буду использовать пример Zend базы данных ошибок, чтобы перевести на мою проблему:

$accountsTable = new Accounts();
$accountsRowset = $accountsTable->find(1234);
$user1234 = $accountsRowset->current();       
$bugsReportedByUser = $user1234->findDependentRowset('Bugs');

Однако в моем случае таблица ошибок будет иметь дополнительные зависимости, которые в этом примере могут быть BugReproduction.Как можно получить эти репродукции (которые содержат много ошибок).Кажется, что очень плохое кодирование для foreach по сравнению с $ bugsReportedByUser и получением дополнительных зависимых наборов для получения репродукций.Это может привести к запросам n-порядка, в то время как каждый всегда хочет фиксированное количество запросов на запрос.

Это кажется тривиальным с Joins, но я не нашел разумного способа сделать это в Zendэкосферы.

1 Ответ

1 голос
/ 10 февраля 2012

Ну, я думал долго и упорно, но она сводится к фундаментальному пропавших без вести из-строк ме-> getDependentRowset. (Не путать со строкой (в единственном числе) -> getDepedentRowset ())

Расширяем Zend_Db_Table_Row_Abtract и используем его в классе Bugs Table примера:

class BugsTable extends Zend_Db_Table_Abstract
{
    protected $_name = 'bugs';
    protected $_rowsetClass = 'MyRowset';
...

И есть findDependentRowset ($ зависимая таблица), реализованная в MyRowSet. Реализация высокого уровня будет:

  1. извлекает первичные ключи ошибок как $ids (массив).
  2. call bugsTable->find($ids) (связь может быть найдена с помощью Zend_Db_Table_Relationship)
  3. Теперь у вас есть все зависимые строки, кратные строке * s *
  4. необязательно: логика ReproductionMapper будет сопоставлять их объектам. Логика BugsMapper может затем добавить их в модель ошибок высокого уровня (не BugsTable)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...