/** * * */ protected function create() { //-- モデル定義情報を取得 $class = LateBinding::getCalledClass(); $primaryKey = call_user_func(array($class, 'primaryKey')); $fields = call_user_func(array($class, 'properties')); $tableName = call_user_func(array($class, 'tableName')); $quotedFields = array(); $placeholders = array(); $values = array(); //-- SQLに埋め込む値を構築 foreach ($fields as $f) { $quotedFields[] = DB::quoteIdentifier($f); $placeholders[] = ':' . $f; $values[":{$f}"] = $this->get($f); } //-- SQLを構築 $sql = 'INSERT INTO ' . DB::quoteIdentifier($tableName) . ' ('; $sql .= implode(', ', $quotedFields); $sql .= ') VALUES ('; $sql .= implode(', ', $placeholders); $sql .= ')'; //-- 実行 $result = DB::query($sql, $values); if ($result === false) { throw new DBException(DB::errorMessage(), DB::errorCode()); } //-- 保存に成功したら主キー値を取得する。 if (count($primaryKey) === 1 and $result !== false) { $id = DB::lastInsertId(); $id !== false and $this->_data[$primaryKey[0]] = $id; } }