ডাটাবেসের সাথে কাজ করার সমস্ত যুক্তি সঞ্চিতাগুলিতে স্থানান্তর করা ভাল।
সুতরাং নিয়ামক আপনি লিখুন
/* you can also inject "FooRepository $repository" using autowire */
$repository = $this->getDoctrine()->getRepository(Foo::class);
$count = $repository->count();
এবং ভিতরে Repository/FooRepository.php
public function count()
{
$qb = $repository->createQueryBuilder('t');
return $qb
->select('count(t.id)')
->getQuery()
->getSingleScalarResult();
}
$qb = ...
আপনি যদি জটিল মত প্রকাশ করতে চান সে ক্ষেত্রে পৃথক সারিতে চলে যাওয়া ভাল
public function count()
{
$qb = $repository->createQueryBuilder('t');
return $qb
->select('count(t.id)')
->where($qb->expr()->isNotNull('t.fieldName'))
->andWhere($qb->expr()->orX(
$qb->expr()->in('t.fieldName2', 0),
$qb->expr()->isNull('t.fieldName2')
))
->getQuery()
->getSingleScalarResult();
}
আপনার অনুসন্ধানের ফলাফলটি ক্যাশে করার বিষয়েও ভাবুন - http://symfony.com/doc/current/references/configration/doctrine.html#caching-drivers
public function count()
{
$qb = $repository->createQueryBuilder('t');
return $qb
->select('count(t.id)')
->getQuery()
->useQueryCache(true)
->useResultCache(true, 3600)
->getSingleScalarResult();
}
কিছু সাধারণ ক্ষেত্রে EXTRA_LAZY
সত্তা সম্পর্ক ব্যবহার করা ভাল
http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/tutorials/extra-lazy-associations.html