PHP-ActiveRecord 的安装及使用
PHP-ActiveRecord 的官网是 http://www.phpactiverecord.org/,GitHub 仓库是 jpfuentes2/php-activerecord。
这里顺便吐槽一下 GitHub 的搜索,一开始我输入的关键词是 php
、active
、record
,然后搜索结果中一个 ActiveRecord
也没有,也就是说,一旦把 active
和 record
分开,就不会跟 ActiveRecord
有任何联系了。这个算法有点坑啊,害我郁闷了好半天。
安装
目前最新的是 1.1.2
版本,我使用 composer
安装:
composer require php-activerecord/php-activerecord:1.1.*
使用
问题
本文主要说一下我使用时遇到的一个问题,就是时间字段保存异常。
在 Connection
类的第 55 到 59 行,有这样一段代码:
/**
* Database's datetime format
* @var string
*/
static $datetime_format = 'Y-m-d H:i:s T';
这里设置了默认时间格式是 Y-m-d H:i:s T
的,所以默认情况下,插入 MySQL 时会提示:
[ActiveRecord\DatabaseException]
exception 'PDOException' with message 'SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2016-11-05 23:43:06 CST' for column 'created_at' at row 1' in /projects/ssx/vendor/php-activerecord/php-activerecord/lib/Connection.php:322
Stack trace:
#0 /projects/ssx/vendor/php-activerecord/php-activerecord/lib/Connection.php(322): PDOStatement->execute(Array)
......
因为,在使用 ActiveRecorde 时要设置一下这个时间格式:
\ActiveRecord\Connection::$datetime_format = 'Y-m-d H:i:s';
这样就好了。
虽然现在看来 PHPActiveRecord 的代码不够优雅,功能也不及 Doctrine 那么强大,但平时开发一些小应用时,仍然是一款趁手的利器。