1

メソッド 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 と同じadvertisingId を持つ「画像」のみが含まれていると予想されますが、代わりに Images テーブルのすべての行を受け取ります。

4

1 に答える 1

4

ドキュメントには、2 番目のテーブルのリファレンス マップの一部の要素の名前が間違っている可能性があると書かれているようです。「column」キーと「refColumn」キーを「columns」と「refColumns」に置き換えてから、文字列値をシングルトン配列に配置するとうまくいくかどうかを確認してください。

詳細については、 http://framework.zend.com/manual/en/zend.db.table.relationships.html#zend.db.table.relationships.definingを参照してください。

于 2010-06-23T21:52:26.270 に答える