3

$this->hasMany()モデルを使用して、またはモデル内で関連するモデル データのフィルタリングを設定する方法は$this->hasOne()?

例えば:

ModalA または ModelB を参照できる SomeData テーブルがあります。ModelA と ModelB には次のものがあります。

$this->hasMany(array('id', 'SomeData', 'foreign_key');

ModelA では、すべての SomeData を取得したいと考えていSomeData.foreign_key = id and SomeData.model = "ModelA"ます。

私は簡単にそれらを得ることができます:

$this->getRelated(
    'SomeData',
     array("model = :model:", 'bind' => array('model' => 'ModelA')
);

しかし$modelA->SomeData、ModelA と ModelB の SomeData を提供してくれます。

条件を追加しようとしまし$this->hasMany()たが、運がありません。

4

1 に答える 1

0

次の方法で実行できます。

    // get what question ids are in test
    $ids_already_in_test = $this->getDI()
       ->get('modelsManager')->createBuilder()
       ->from('Model_QuestionToTest')
       ->columns(array('question_id'))
       ->andWhere('Model_QuestionToTest.test_id = :test_id:', array('test_id' =>  
                                   $search_options['not_in_test']))
       ->getQuery()
       ->execute();
    // filter out these ids
    $ids = array();
    foreach ($ids_already_in_test as $id) {
        $ids[] = (int) $id->question_id;
    }
    unset($ids_already_in_test);
    if (count($ids))
        $questions_query->notInWhere('Model_UserQuestion.id', $ids);
    }

2 つの手順があります。1) ID を取得します。必要でないもの、または必要なもの 2) メイン クエリで「notInWhere」または「inWhere」を使用して設定されたこの ID から結果を取得します。

于 2014-02-02T07:02:37.283 に答える