Blast\Orm\Relations\HasMany::getQuery PHP Метод

getQuery() публичный Метод

Get relation query
public getQuery ( ) : Query
Результат 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();
        $data = $provider->extract();
        //find primary key
        if ($foreignKey === null) {
            $foreignKey = Inflector::singularize($provider->getDefinition()->getTableName()) . '_' . $provider->getDefinition()->getPrimaryKeyName();
        }
        $mapper = $foreignProvider->getDefinition()->getMapper()->setConnection($this->getConnection());
        $foreignKeyValue = isset($data[$provider->getDefinition()->getPrimaryKeyName()]) ? $data[$provider->getDefinition()->getPrimaryKeyName()] : false;
        //if no primary key is available, return a select
        $query = $mapper->select();
        if ($foreignKeyValue !== false) {
            $query->where((new Query($this->getConnection()))->expr()->eq($foreignKey, $foreignKeyValue));
        }
        $this->query = $query;
        return $this->query;
    }

Usage Example

Пример #1
0
 /**
  * Get relation query
  *
  * @return \Blast\Orm\Query
  */
 public function getQuery()
 {
     return parent::getQuery()->setMaxResults(1);
 }