PHP-ActiveRecord 的官网是 http://www.phpactiverecord.org/,GitHub 仓库是 jpfuentes2/php-activerecord

这里顺便吐槽一下 GitHub 的搜索,一开始我输入的关键词是 phpactiverecord,然后搜索结果中一个 ActiveRecord 也没有,也就是说,一旦把 activerecord 分开,就不会跟 ActiveRecord 有任何联系了。这个算法有点坑啊,害我郁闷了好半天。

安装

目前最新的是 1.1.2 版本,我使用 composer 安装:

composer require php-activerecord/php-activerecord:1.1.*

使用

使用可以参考 官方Wiki
也有详细的文档可供参考 官网文档

问题

本文主要说一下我使用时遇到的一个问题,就是时间字段保存异常。

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 那么强大,但平时开发一些小应用时,仍然是一款趁手的利器。