فهرست منبع

Fetch minimum data for dependents page and fix query to work in mysql strict mode

Jordi Boggiano 10 سال پیش
والد
کامیت
ae8046b2c3
2فایلهای تغییر یافته به همراه9 افزوده شده و 3 حذف شده
  1. 7 1
      src/Packagist/WebBundle/Controller/Controller.php
  2. 2 2
      src/Packagist/WebBundle/Entity/PackageRepository.php

+ 7 - 1
src/Packagist/WebBundle/Controller/Controller.php

@@ -15,6 +15,7 @@ namespace Packagist\WebBundle\Controller;
 use Symfony\Bundle\FrameworkBundle\Controller\Controller as BaseController;
 use Pagerfanta\Adapter\DoctrineORMAdapter;
 use Pagerfanta\Pagerfanta;
+use Packagist\Entity\Package;
 
 /**
  * @author Jordi Boggiano <j.boggiano@seld.be>
@@ -39,9 +40,14 @@ class Controller extends BaseController
                 if ($package instanceof \Solarium_Document_ReadOnly) {
                     $solarium = true;
                     $ids[] = $package->id;
-                } else {
+                } elseif ($package instanceof Package) {
                     $ids[] = $package->getId();
                     $favs[$package->getId()] = $favMgr->getFaverCount($package);
+                } elseif (is_array($package)) {
+                    $solarium = true;
+                    $ids[] = $package['id'];
+                } else {
+                    throw new \LogicException();
                 }
             }
 

+ 2 - 2
src/Packagist/WebBundle/Entity/PackageRepository.php

@@ -339,14 +339,14 @@ class PackageRepository extends EntityRepository
     public function getDependents($name, $offset = 0, $limit = 15)
     {
         $qb = $this->getEntityManager()->createQueryBuilder();
-        $qb->select('p')
+        $qb->select('p.id, p.name, p.description, p.language')
             ->from('Packagist\WebBundle\Entity\Package', 'p')
             ->join('p.versions', 'v')
             ->leftJoin('v.devRequire', 'dr')
             ->leftJoin('v.require', 'r')
             ->where('v.development = true')
             ->andWhere('(r.packageName = :name OR dr.packageName = :name)')
-            ->groupBy('p.id')
+            ->groupBy('p.id, p.name, p.description, p.language')
             ->orderBy('p.name')
             ->setParameter('name', $name);