Отношения Zend Framework — findDependentRowset

Когда я вызываю метод findDependentRowset, возвращаемый набор строк содержит все строки в зависимой таблице, а не только те наборы строк, которые соответствуют ссылке.

Надеясь, что кто-то может это объяснить, поскольку я предполагал, что findDependentRowset будет возвращать только набор строк, соответствующий моему «правилу»?

У меня есть следующие модели DbTable:

class Model_DbTable_Advertisement extends Zend_Db_Table_Abstract
{
    protected $_name = 'Advertisements';
    protected $_primary = 'Id';

    protected $_dependentTables = array (
        'Model_DbTable_Image',
    );
}

class Model_DbTable_Image extends Zend_Db_Table_Abstract
{
    protected $_name = 'Images';
    protected $_primary = 'Id';

    protected $_referenceMap = array(
        'Images' => array(
            'column' => 'AdvertisementId',
            'refColumn' => 'Id',
            'refTableClass' => 'Model_DbTable_Advertisement',
        )
    );

}

Теперь, когда я выполняю следующее: (упрощено ради вопроса)

$model = new Model_DbTable_Advertisement();
$rowSet = $model->fetchAll();
$row = $rowSet->current();
$dRow = $row->findDependentRowset('Model_DbTable_Image');

Я бы ожидал, что $dRow будет содержать только «изображения», которые имеют тот же рекламный идентификатор, что и $row, но вместо этого я получаю все строки в таблице изображений.


person Morten Nielsen    schedule 18.05.2010    source источник
comment
Пожалуйста, отметьте ответ на этот вопрос как ответ, который вы искали.   -  person halfpastfour.am    schedule 10.12.2014


Ответы (1)


В документации, похоже, говорится, что вы можете неправильно называть некоторые элементы в своей справочной карте для второй таблицы. Посмотрите, поможет ли замена ключей «column» и «refColumn» на «columns» и «refColumns», а затем размещение строковых значений в одноэлементных массивах.

См. http://framework.zend.com/manual/en/zend.db.table.relationships.html#zend.db.table.relationships.defining для получения дополнительной информации.

person Robert Elwell    schedule 23.06.2010