1

チュートリアルに基づいてZf2を使用して小さなアプリケーションをまとめました。データベースからデータを取得したい場合、奇妙な問題に直面しなければなりませんでした。

TableGateway クラスにこのメソッドがあります。

public function selectWith($select = null) {

    $filter = new Predicate();
    $filter->like('category_name',"%dess%")
            ->OR
            ->like('category_desc', "%ks%");

    var_dump($this->tableGateway->select(function(Select $select) use ($filter) {
        $select->where($filter);
    }));

    return $this->tableGateway->select(function(Select $select) use ($filter) {
        $select->where($filter);
    });
}

ダンプによると、次のクエリが実行されました。

SELECT `categories`.* FROM `categories` WHERE (`category_name` LIKE :where1 OR `category_desc` LIKE :where2)

これの代わりに、ソース コードで形式化する必要があります。

SELECT `categories`.* FROM `categories` WHERE (`category_name` LIKE '%dess%' OR `category_desc` LIKE '%ks%')

これはバグですか、それとも何か間違っていますか?

APIによると、Like は 2 つのパラメーターのみを受け入れます。どちらも文字列です。

ZF 2.2.2 を使用しています

事前に助けてくれてありがとう!

4

1 に答える 1