コード例 #1
0
 private function createMultipleQuery(MultipleEntityRetrieverCriteria $criteria, $containerName)
 {
     $orderingString = 'order by created_on asc';
     if ($criteria->hasOrdering()) {
         $ordering = $criteria->getOrdering();
         $orderingString = $this->createOrdering($ordering);
     }
     if ($criteria->hasUuids()) {
         $uuids = $criteria->getUuids();
         $binaries = $this->uuidAdapter->fromUuidsToBinaryStrings($uuids);
         $keys = array_keys($binaries);
         $keysWithSemiColon = array_map(function ($oneKeyname) {
             return ':' . $oneKeyname;
         }, $keys);
         return array('name' => 'select * from ' . $containerName . ' where uuid IN( ' . implode(', ', $keysWithSemiColon) . ' ) ' . $orderingString . ';', 'params' => $binaries);
     }
     if ($criteria->hasKeyname()) {
         $keyname = $criteria->getKeyname();
         $name = $keyname->getName();
         $nameWithSemicolon = ':' . $name;
         $value = $keyname->getValue();
         return array('name' => 'select * from ' . $containerName . ' where ' . $name . ' = ' . $nameWithSemicolon . ' ' . $orderingString . ';', 'params' => [$name => $value]);
     }
     throw new EntityRepositoryException('There must be at least 1 retriever criteria in order to retrieve multiple entities data.');
 }