0

Ok Im はまだ Zend に慣れていないので、ORM が一般的にどのように機能するかを見つけようとすると、困難な作業が発生するようです (特定のドキュメントがどこにあるかは誰でも知っています)。それはさておき、私がやろうとしているのは、既存のクエリを取得して「AND」句を追加することです。他の場所で見つけた例はこのように見えないため、どうすればよいかわかりません。これで破損することは避けたいと思います

$select = $this->select()
            ->from('offer_term')
            ->setIntegrityCheck(false)
            ->joinUsing('term_mapping', 'term_id')
            ->where('promo_id = ?', $promo_id);
        return $this->fetchAll($select);
4

2 に答える 2

1

試す:

$select = $this->select()
    ->from('offer_term')
    ->setIntegrityCheck(false)
    ->joinUsing('term_mapping', 'term_id')
    ->where('promo_id = ?', $promo_id);
    ->where('name = ?', $name); // WHERE promo_id = $promo_id AND name = $name
return $this->fetchAll($select);

そして、手動を使用することを忘れないでください。

于 2012-06-29T20:16:42.353 に答える
1

Zend_db がどのように機能するかを理解し始めると、実際にはこれは非常に簡単です。

あなたのクエリ:

$select = $this->select()
            ->from('offer_term')
            ->setIntegrityCheck(false)
            ->joinUsing('term_mapping', 'term_id')
            ->where('promo_id = ?', $promo_id);
        return $this->fetchAll($select);

クエリを実行するために既にselect()オブジェクトを使用しているので、次のようにリファクタリングしてみてください (条件付きで行う方法も含めます)。

$select = $this->select()->setIntegrityCheck(false);
$select->from('offer_term');//if query is inside of a DbTable model the from() can be omitted
$select->joinUsing('term_mapping', 'term_id');
$select->where('promo_id = ?', $promo_id);//Every time you add a where(), select() adds the param using the AND operator
$select->where('something_new = ?', $new_param);//if you need to add a param using OR you can use the orWhere() method.
if (TRUE) {
    $select->orWhere('something = ?',$parameter);//This will add an OR WHERE to the query if the condition is true.
}
return $this->fetchAll($select);

クエリにANDを追加するには、チェーンに別の AND を追加するだけです。これは、元のクエリのように連鎖するか、私が行ったように個別のステートメントを使用することで実行できます。クエリでOR演算子を使用する必要がある場合は、メソッドを使用できます。select()where()select()orWhere()

必要に応じてチェーンと個別のステートメントを混在させることができるため、条件を簡単に追加できます。

注: Zend_Db は ORM ではなく、テーブル ゲートウェイとテーブル行パターンの実装です (名前が正しいことを願っています)。したがって、完全な ORM 機能を期待しないでください。

お役に立てれば。

于 2012-06-30T07:42:12.983 に答える