FuelPHP+PostgresqlでInsertIdを取得する方法

FuelPHPでPostgresqlを使用してInsertを行うとInsertで生成したlastInsertIdが取得できません。

原因はPDO::lastInsertIdの使い方でした。
PDOのマニュアルに「PDO_PGSQL の場合、name パラメータにシーケンスオブジェクト名を指定する必要があります。」と記載されているのに
FuelPHPのCoreでは対応していません。

なので、Coreを拡張して対応することにしました。

拡張対象のクラス

  • Database_PDO_Connection
  • Database_Query

それぞれのクラスを作成する。

APPPATH .’classes/core/query.php’
\Fuel\Core\Database_Queryクラスより、executeメソッドをコピーし拡張を施す。

APPPATH .’classes/core/connection.php’
\Fuel\Core\Database_PDO_Connectionクラスより、queryメソッドをコピーし拡張を施す。

後はAPPPATH . ‘bootstrap.php’に拡張したCoreを読み込ませる設定を追加

これで完了。

簡単な使い方はこれ