i really don't get the point how to use predicates in zend framework 2.
this is what i got:
$sql->select()
->columns(array('GroupedColum'
,'minValue' => new Expression('min(ValueColumn)')))
->from('ValueTable')
->group('GroupedColum')
->order('minValue')
->order('GroupedColum')
->limit(10);
this is working fine
now i want to apply somethin like that:
$predicate = new Zend\Db\Sql\Predicate\Predicate();
$sql->where($predicate->greaterThan('filterColumn','20);
this is what i tried, it throws no error, but it is not working :-(
This is what i expect as SQL:
select GroupedColum
, min(ValueColumn) as minValue
from ValueTable
where filterColumn > 20
group by GroupedColum
order by minValue
GroupedColum
limit 10;
I've solved the problem by viewing the source code of zf2
If you know how to do it, it is really easy, the code above was almost right!
Instead of
$predicate = new Zend\Db\Sql\Predicate\Predicate();
you have to use
$predicate = new \Zend\Db\Sql\Where();
it is an empty derived class, that is used in Zend\Db\Sql\Sql
this is the complete working example:
$sql->select()
->columns(array('GroupedColum'
,'minValue' => new Expression('min(ValueColumn)')))
->from('ValueTable')
->group('GroupedColum')
->order('minValue')
->order('GroupedColum')
->limit(10);
$predicate = new \Zend\Db\Sql\Where();
$sql->where($predicate->greaterThan('filterColumn','20'));