Inheritance: implements Blast\Orm\ConnectionAwareInterface, implements League\Event\EmitterAwareInterface, implements Blast\Orm\Entity\EntityAwareInterface, implements Blast\Orm\Entity\ProviderFactoryInterface, implements Blast\Orm\QueryInterface, use trait ConnectionAwareTrait, use trait League\Event\EmitterAwareTrait, use trait Blast\Orm\Entity\EntityAwareTrait, use trait Blast\Orm\Entity\ProviderFactoryTrait
コード例 #1
0
ファイル: Gateway.php プロジェクト: phpthinktank/blast-orm
 /**
  *
  * @todo determine exclusion from gateway and integration into query similar to php value convert
  *
  * @param $data
  * @param \Doctrine\DBAL\Schema\Column[] $fields
  * @param Query $query
  */
 protected function addDataToQuery($data, $fields, Query $query)
 {
     foreach ($data as $key => $value) {
         $query->addColumnValue($key, $query->createPositionalParameter($value, array_key_exists($key, $fields) ? $fields[$key]->getType()->getName() : Type::STRING));
     }
 }
コード例 #2
0
ファイル: ManyToMany.php プロジェクト: phpthinktank/blast-orm
 /**
  * Get relation query
  *
  * @return \Blast\Orm\Query
  */
 public function getQuery()
 {
     if (null !== $this->query) {
         return $this->query;
     }
     $provider = $this->createProvider($this->getEntity());
     $foreignProvider = $this->createProvider($this->getForeignEntity());
     $foreignKey = $this->getForeignKey();
     $junction = $this->getJunction();
     $junctionLocalKey = $this->getJunctionLocalKey();
     $junctionForeignKey = $this->getJunctionForeignKey();
     $data = $provider->extract();
     $localKey = $provider->getDefinition()->getPrimaryKeyName();
     //determine foreign key
     if ($foreignKey === null) {
         $foreignKey = $foreignProvider->getDefinition()->getPrimaryKeyName();
     }
     //determine through
     if (!is_string($junction) || $junction === null) {
         $junction = Inflector::singularize($provider->getDefinition()->getTableName()) . '_' . Inflector::singularize($foreignProvider->getDefinition()->getTableName());
     }
     //determine through local key
     if ($junctionLocalKey === null) {
         $junctionLocalKey = Inflector::singularize($provider->getDefinition()->getTableName()) . '_' . $localKey;
     }
     //determine through foreign key
     if ($junctionForeignKey === null) {
         $junctionForeignKey = Inflector::singularize($foreignProvider->getDefinition()->getTableName()) . '_' . $foreignKey;
     }
     $query = new Query($provider->getDefinition()->getMapper()->getConnection());
     //prepare query for foreign table
     $foreignQuery = $foreignProvider->getDefinition()->getMapper()->setConnection($this->getConnection())->select();
     //get relations by through db object
     if (isset($data[$localKey])) {
         $junctionProvider = is_string($junction) ? $this->createProvider($junction) : $junction;
         $junctionMapper = $junctionProvider->getDefinition()->getMapper();
         $junctionMapper->setConnection($this->getConnection());
         if (true) {
         }
         $results = $junctionMapper->select([$junctionForeignKey])->where($query->expr()->eq($junctionLocalKey, $data[$localKey]))->execute(HydratorInterface::HYDRATE_RAW);
         //set conditions on foreign query
         foreach ($results as $result) {
             $foreignQuery->where($query->expr()->eq($foreignKey, $result[$junctionForeignKey]));
         }
     }
     $this->query = $foreignQuery;
     return $this->query;
 }
コード例 #3
0
ファイル: Connection.php プロジェクト: phpthinktank/blast-orm
 /**
  * Factory method for create a new query for given entity with optional custom query builder.
  *
  * @param $entity
  *
  * @param \Doctrine\DBAL\Query\QueryBuilder $builder
  *
  * @return \Blast\Orm\Query
  */
 public function createQuery($entity = null, QueryBuilder $builder = null)
 {
     $query = new Query($this, $entity);
     $query->setBuilder(null === $builder ? parent::createQueryBuilder() : $builder);
     return $query;
 }