public function getBy(QueryObject $query) { $class = $this->entity_class; $query->setBaseEntity(new $class()); $filter = (string) $query; $do = $class::get()->where($filter); $joins = $query->getAlias(); foreach ($joins as $table => $clause) { $do = $do->innerJoin($table, $clause); } if (count($query->getOrder())) { $do = $do->sort($query->getOrder()); } if (is_null($do)) { return false; } $entity = $do->first(); $this->markEntity($entity); return $entity; }
public function getBy(QueryObject $query) { $class = $this->entity_class; $query->setBaseEntity(new $class()); $filter = (string) $query; $do = $class::get()->where($filter); foreach ($query->getAlias(QueryAlias::INNER) as $spec) { $do = $do->innerJoin($spec->getTable(), $spec->getCondition(), $spec->getAlias()); } foreach ($query->getAlias(QueryAlias::LEFT) as $spec) { $do = $do->leftJoin($spec->getTable(), $spec->getCondition(), $spec->getAlias()); } if (count($query->getOrder())) { $do = $do->sort($query->getOrder()); } if (is_null($do)) { return false; } $entity = $do->first(); $this->markEntity($entity); return $entity; }
public function getBy(QueryObject $query) { $class = $this->entity_class; $query->setBaseEntity(new $class()); $filter = (string) $query; $do = $class::get()->where($filter); $joins = $query->getAlias(); foreach ($joins as $table => $clause) { $do = $do->innerJoin($table, $clause); } if (count($query->getOrder())) { $do = $do->sort($query->getOrder()); } if (is_null($do)) { return false; } $entity = $do->first(); if (!is_null($entity) && $entity instanceof IEntity) { UnitOfWork::getInstance()->setToCache($entity); UnitOfWork::getInstance()->scheduleForUpdate($entity); } return $entity; }