前言:我的phalcon版本3.3.2
1.创建一个数据库服务(store_log_db)
$di->setShared('store_log_db', function () {
$config = $this->getConfig();
$class = 'Phalcon\Db\Adapter\Pdo\\' . $config->database->adapter;
$params = [
'host' => $config->store_log_database->host,
'username' => $config->store_log_database->username,
'password' => $config->store_log_database->password,
'dbname' => $config->store_log_database->dbname,
'charset' => $config->store_log_database->charset
];
if ($config->database->adapter == 'Postgresql') {
unset($params['charset']);
}
$connection = new $class($params);
return $connection;
});
2.创建数据库表的代码
$connection = $this->getDI()->get('store_log_db');
if (!$connection->tableExists($tableName)) {
$connection->createTable($tableName, null,
array(
"indexes" => array(
new Index("mobile", ['mobile']),
new Index('method', ['method'])
),
"options" => array(
"TABLE_TYPE" => "BASE TABLE",
"ENGINE" => "InnoDB",
"TABLE_COLLATION" => "utf8mb4_unicode_ci",
),
"columns" => array(
new Column(
"id",
array(
"type" => Column::TYPE_INTEGER,
"size" => 10,
'unsigned' => true,
"notNull" => true,
"autoIncrement" => true,
"primary" => true,
'first' => true,
)
),
new Column(
"order_id",
array(
"type" => Column::TYPE_INTEGER,
"size" => 10,
"unsigned" => true,
'default' => 0,
'after' => 'id',
)
),
new Column(
"type",
array(
"type" => Column::TYPE_VARCHAR,
"size" => 64,
'after' => 'order_id',
)
),
new Column(
"method",
array(
"type" => Column::TYPE_VARCHAR,
"size" => 32,
'after' => 'type',
)
),
new Column(
"mobile",
array(
"type" => Column::TYPE_VARCHAR,
"size" => 11,
'after' => 'method',
)
),
new Column(
"authorization",
array(
"type" => Column::TYPE_VARCHAR,
"size" => 20,
'after' => 'mobile',
)
),
new Column(
"request_data",
array(
"type" => Column::TYPE_TEXT,
'after' => 'authorization',
)
),
new Column(
"response_data",
array(
"type" => Column::TYPE_TEXT,
'after' => 'request_data',
)
),
new Column(
'updated_at',
array(
'type' => 'TIMESTAMP',
'typeReference' => Column::TYPE_TIMESTAMP,
'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
"notNull" => false,
'after' => 'response_data',
)
),
new Column(
"created_at",
array(
'type' => 'TIMESTAMP',
'typeReference' => Column::TYPE_TIMESTAMP,
'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
"notNull" => false,
'after' => 'updated_at',
)
),
)
)
);
3.创建timestamp字段可能会出现的问题
4.参考文献