public static function create($attributes) { $attributes = static::validateAttributes($attributes); if (array_key_exists('created_at', static::columns()) && empty($attributes['created_at'])) { $attributes['created_at'] = date('Y-m-d H:i:s'); } if (array_key_exists('updated_at', static::columns()) && empty($attributes['updated_at'])) { $attributes['updated_at'] = date('Y-m-d H:i:s'); } $params = SqlBuilder::parseInsertSql(static::table(), $attributes); $lastInsertId = Connection::instance()->insert($params['sql'], $params['values']); if ($lastInsertId > 0 && static::$primaryKey !== null) { $attributes[static::$primaryKey] = $lastInsertId; } return new static($attributes, false); }
public function testParseInsertSql() { $this->assertEquals(array('sql' => 'INSERT INTO `user` SET `first_name`=?,`family_name`=?,`age`=?', 'values' => array('Tom', 'Huang', 24)), SqlBuilder::parseInsertSql('user', array('first_name' => 'Tom', 'family_name' => 'Huang', 'age' => 24))); }