public function testGetInsertingData() { $article = new Article(); $article->setCreatedAt(time()); $article->setTitle('test'); $article->setText('test text'); $data = $this->helper->getInsertingData($article); $this->assertCount(3, $data); $this->assertArrayHasKey('created_at', $data); $this->assertArrayHasKey('title', $data); $this->assertArrayHasKey('text', $data); }
/** * Saves entity to database * * @param $entity - object * * @return boolean */ public function save($entity) { $entityName = $this->dbHelper->getEntityName($entity); $tableName = $this->dbHelper->getUnderscoreName($entityName); $data = $this->dbHelper->getInsertingData($entity); $query = "INSERT INTO `{$tableName}` (%s) VALUES (%s)"; $values = []; $fields = ''; $subs = ''; foreach ($data as $field => $value) { $subs .= "?, "; $fields .= "`{$field}`, "; $values[] = $value; } $subs = substr($subs, 0, strlen($subs) - 2); $fields = substr($fields, 0, strlen($fields) - 2); try { $stmt = $this->pdo->prepare(sprintf($query, $fields, $subs)); for ($i = 0; $i < count($values); $i++) { $type = $this->dbHelper->getValueType($values[$i]); $stmt->bindParam($i + 1, $values[$i], $type); } $stmt->execute(); } catch (\Exception $e) { die($e->getMessage()); } return true; }