项目需要采用了 Lumen 来开发 RESTful API 但又有需要修改 PDO 的 Fetch Mode 的需求
由于 Lumen 文档并没有关于此的特别说明 便参照 Laravel 过往的做法试图配置 config/database.php 并不起作用
在 翻阅 Laravel 文档中关于 升级变更的说明时才提到 在几周前发布的 5.4 版本 中不再支持 在配置文件中自定义 Fetch Mode (其实本身 Laravel 也一直不推荐修改)
如果需要这么做的话 目前采用的方案是 监听 Illuminate\Database\Events\StatementPrepared 事件 进行配置
对应到 Lumen 中也是一样的 可以在 EventServiceProvider 的 boot 方法中 设置
use Illuminate\Database\Events\StatementPrepared;
public function boot() { // 修改 PDO Fetch Mode Event::listen(StatementPrepared::class, function($event) { $event->statement->setFetchMode( ... ); }); // 其他自定义监听事件 }
当然 如果之前没有启用 EventServiceProvider 的话 还需要在 bootstrap/app.php 启用
// 去除前面的注释 $app->register(App\Providers\EventServiceProvider::class);