/** * @covers QueryBuilder::buildUpdateQuery * @todo Implement testBuildUpdateQuery(). */ public function testBuildUpdateQuery() { $weapon = new Weapon(2, "boomerang"); $expected = "UPDATE `weapon` SET `name`=:name WHERE id=:id"; $buildedQuery = $this->object->getUpdateQuery($weapon, $this->weaponMapper); $this->assertEquals($expected, $buildedQuery); }
function doInsertRelation($entity, $relation) { $statement = QueryBuilder::getInsertRelation($entity, $relation); $stmt = $this->getConnection()->prepare($statement); $getid = "getId"; $method = "get" . $relation->getName(); foreach ($entity->{$method}() as $rel) { $values = array(); $values[":" . $relation->getLocalColumn()] = $entity->{$getid}(); $values[":" . $relation->getForeignColumn()] = $rel->{$getid}(); $stmt->execute($values); } }
/** * Find by table relation. * @param type $entity * @param string $relationName * @param string $orderColumn * @param string $orderType * @return Collection */ public function findRelation($entity, $relationName, $orderColumn = null, $orderType = null) { $this->load(); $mapper = MapperBuilder::buildFromClassName($this->mapping, get_class($entity)); $relation = $mapper->getRelation($relationName); $relationMapper = MapperBuilder::buildFromName($this->mapping, $relation->getEntity()); $selectQuery = "SELECT tmain.* FROM `" . $relationMapper->getTable() . "` tmain "; $joinQuery = QueryBuilder::buildJoinRelationQuery($relation, "tmain", "j1"); $whereQuery = "WHERE j1." . $relation->getLocalColumn() . " = '" . $entity->getId() . "'"; $orderQuery = ""; if (!is_null($orderColumn)) { $orderQuery .= "ORDER BY {$orderColumn} "; if (!is_null($orderType)) { $orderQuery .= "{$orderType}"; } else { $orderQuery .= "ASC"; } } $query = $selectQuery . $joinQuery . $whereQuery . $orderQuery; $queryResult = $this->getDataSource()->query($query); if ($queryResult) { $collection = new Collection($relationMapper->getClass(), $queryResult, $relationMapper); } else { $collection = new Collection($relationMapper->getClass(), array(), $relationMapper); } return $collection; }