Zend 框架关系 - findDependentRowset

发布于 2024-09-02 14:28:07 字数 1059 浏览 8 评论 0原文

当我调用 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 具有相同advertisementId 的“图像”,但我收到了图像表中的所有行。

When I call the method findDependentRowset, the returning rowset contains all the rows in the dependent table, and not only the rowsets that matches the reference.

Hoping someone could explain this, since I was of the assumption that findDependentRowset would only return rowset matching my 'rule'?

I have the following DbTable Models:

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',
        )
    );

}

Now when i execute the following: (Simplified for Question sake)

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

I would expect $dRow to only contain 'Images' that has the same advertisementId as $row, but instead i receive all rows in the Images table.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尸血腥色 2024-09-09 14:28:07

该文档似乎说您可能错误地命名了第二个表的参考图中的某些元素。看看用“columns”和“refColumns”替换“column”和“refColumn”键,然后将字符串值放入单例数组中是否可以解决问题。

请参阅 http:// /framework.zend.com/manual/en/zend.db.table.relationships.html#zend.db.table.relationships.defining 了解更多信息

The documentation seems to say that you may be misnaming some elements in your reference map for the second table. See if replacing the 'column' and 'refColumn' keys with 'columns' and 'refColumns', and then placing the string values into singleton arrays does the trick.

See http://framework.zend.com/manual/en/zend.db.table.relationships.html#zend.db.table.relationships.defining for more info

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文