having() public method

Adds a condition or set of conditions to be used in the HAVING clause for this query. This method operates in exactly the same way as the method where() does. Please refer to its documentation for an insight on how to using each parameter.
See also: Cake\Database\Query::where()
public having ( string | array | Cake\Database\ExpressionInterface | callable | null $conditions = null, array $types = [], boolean $overwrite = false )
$conditions string | array | Cake\Database\ExpressionInterface | callable | null The having conditions.
$types array associative array of type names used to bind values to query
$overwrite boolean whether to reset conditions with passed list or not
Beispiel #1
0
 /**
  * Tests that having() behaves pretty much the same as the where() method
  *
  * @return void
  */
 public function testSelectHaving()
 {
     $query = new Query($this->connection);
     $result = $query->select(['total' => 'count(author_id)', 'author_id'])->from('articles')->join(['table' => 'authors', 'alias' => 'a', 'conditions' => 'author_id = a.id'])->group('author_id')->having(['count(author_id) <' => 2], ['count(author_id)' => 'integer'])->execute();
     $expected = [['total' => 1, 'author_id' => 3]];
     $this->assertEquals($expected, $result->fetchAll('assoc'));
     $result = $query->having(['count(author_id)' => 2], ['count(author_id)' => 'integer'], true)->execute();
     $expected = [['total' => 2, 'author_id' => 1]];
     $this->assertEquals($expected, $result->fetchAll('assoc'));
     $result = $query->having(function ($e) {
         return $e->add('count(author_id) = 1 + 1');
     }, [], true)->execute();
     $expected = [['total' => 2, 'author_id' => 1]];
     $this->assertEquals($expected, $result->fetchAll('assoc'));
 }