PHP code example of primasoftware / doctrine-specification
1. Go to this page and download the library: Download primasoftware/doctrine-specification library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
primasoftware / doctrine-specification example snippets
php
// Not using the lib
$qb = $this->em->getRepository('HappyrRecruitmentBundle:Advert')
->createQueryBuilder('r');
return $qb->where('r.ended = 0')
->andWhere(
$qb->expr()->orX(
'r.endDate < :now',
$qb->expr()->andX(
'r.endDate IS NULL',
'r.startDate < :timeLimit'
)
)
)
->setParameter('now', new \DateTime())
->setParameter('timeLimit', new \DateTime('-4weeks'))
->getQuery()
->getResult();
php
// Using the lib
$spec = Spec::andX(
Spec::eq('ended', 0),
Spec::orX(
Spec::lt('endDate', new \DateTime()),
Spec::andX(
Spec::isNull('endDate'),
Spec::lt('startDate', new \DateTime('-4weeks'))
)
)
);
return $this->em->getRepository('HappyrRecruitmentBundle:Advert')->match($spec);
php
class AdvertRepository extends EntityRepository
{
protected function filterAdvertsWeShouldClose($qb)
{
return $qb
->andWhere('r.ended = 0')
->andWhere(
$qb->expr()->orX(
'r.endDate < :now',
$qb->expr()->andX('r.endDate IS NULL', 'r.startDate < :timeLimit')
)
)
->setParameter('now', new \DateTime())
->setParameter('timeLimit', new \DateTime('-4weeks'))
;
}
protected function filterOwnedByCompany($qb, Company $company)
{
return $qb
->join('company', 'c')
->andWhere('c.id = :company_id')
->setParameter('company_id', $company->getId())
;
}
public function myQuery(Company $company)
{
$qb = $this->em->getRepository('HappyrRecruitmentBundle:Advert')->createQueryBuilder('r');
$this->filterAdvertsWeShouldClose($qb)
$this->filterOwnedByCompany($qb, $company)
return $qb->getQuery()->getResult();
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.