Пример #1
0
 /**
  *
  *
  */
 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;
     }
 }