2017-07-28 4 views
1

未満/以上のSQLクエリZF2グレータークエリ

Select * FROM table_name 
WHERE category = 'category_name' 
AND created < 'todays_date' 
AND created > 'yesterdays_date' 

もORDERとLIMIT条件を追加する必要があります。 ZF2でこれをどのように達成できますか?この場合、<=>=

$rowset = $this->tableGateway->select(function ($select) { 
     $select->where(['category' => $this->category]); 
     $select->order('id Desc'); 
     $select->limit($this->limit); 

     $DBtimeNow = new \DateTime(); 
     $select->lessThanOrEqualTo("created", $DBtimeNow->format('Y-m-d H:i:s')); 
     $DBtimeNow->sub(new DateInterval('P1D')); 
     $select->greaterThanOrEqualTo("created", $DBtimeNow->format('Y-m-d H:i:s')); 
    }); 

答えて

1

はあなたが演算子を使用したいと述語オブジェクトを使用する必要があります。

私はこのコードを持っています。 ZF2のこのコンポーネントZend\Db\Sql\WhereZend\DbのZF2として使用すると、Zend\Db\Sql\Predicateに拡張されます。そして、私たちが必要なときに、それらの演算子を使うことができます。以下をチェックしてください:

$select = $this->tableGateway->getSql()->select(); 

// here is the catch 
$predicate = new \Zend\Db\Sql\Where(); 

$select->where(['category' => $this->category]); 

// now use thus 
$DBtimeNow = new \DateTime(); 
$select->where($predicate->lessThanOrEqualTo("created", $DBtimeNow->format('Y-m-d H:i:s')), 'AND'); 
$DBtimeNow->sub(new DateInterval('P1D')); 
$select->where($predicate->greaterThanOrEqualTo("created", $DBtimeNow->format('Y-m-d H:i:s')), 'AND'); 

$select->order('id Desc'); 
$select->limit($this->limit); 

$resultSet = $this->tableGateway->selectWith($select);