Newscoop\Package\PackageRepository::findBy PHP Method

findBy() public method

Find packages by a set of criteria
public findBy ( array $criteria, array $orderBy = null, integer $limit = null, integer $offset = null )
$criteria array
$orderBy array
$limit integer
$offset integer
    public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
    {
        $queryBuilder = $this->createQueryBuilder('p')->select('p, COUNT(i)')->leftJoin('p.items', 'i')->groupBy('p.id');
        $this->setCriteria($queryBuilder, $criteria);
        if (!empty($orderBy)) {
            foreach ($orderBy as $sort => $order) {
                $queryBuilder->orderBy("p.{$sort}", $order);
            }
        }
        $queryBuilder->setFirstResult($offset);
        $queryBuilder->setMaxResults($limit);
        $packages = array();
        foreach ($queryBuilder->getQuery()->getResult() as $row) {
            $package = $row[0];
            $package->setItemsCount($row[1]);
            $packages[] = $package;
        }
        return $packages;
    }