6

私のモデルでは:

$rowset = $this->tableGateway->select(array('username' => $identifier));
$row = $rowset->current();
return $row;

次のクエリを実行します。

SELECT * FROM member WHERE username='<< ENTERED VALUE >>'; 

しかし、私は次のクエリを実行したい:

SELECT * FROM member WHERE username='<< ENTERED VALUE >>' OR id_customer='<< ENTERED VALUE >>'; 

モデルファイルに加えなければならない変更は何ですか?

そして、これに関する有益なブログを提案してください。ZF2ドキュメントでこれに対する答えが見つかりません。

4

3 に答える 3

4

これを行う最も簡単な方法は、明示的なORキーワードを使用することです。

$where = new Zend\Db\Sql\Where;
$where->equalTo( 'username', $identifier );
$where->OR->equalTo( 'id_customer', $customerId );

$rowset = $this->tableGateway->select( $where );
$row = $rowset->current();
return $row;
于 2013-07-08T09:24:45.900 に答える
2

私は ZF 2 よりも ZF 1 の経験が豊富なので、他の (より良い、より単純な) 解決策があるかもしれませんが、これでうまくいくはずです:

// Manually build the Select object
$select = $this->tableGateway->getSql()->select();

// Create array containing the fields and their expected values
$conditions = array('username' => 'foo', 'id_customer' => 123);

// Add these fields to the WHERE clause of the query but place "OR" in between
$select->where($conditions, \Zend\Db\Sql\Predicate\PredicateSet::OP_OR);

// Perform the query
$rowset = $this->tableGateway->selectWith($select);
于 2013-07-07T11:31:12.963 に答える