多分あなたはインストールが面倒だったPomm 1.xについて話しています。
$ composer.phar require "pomm-project/foundation"
そして、それがすべてです:Pomm 2.xコアライブラリ(財団)は、インストールが小さくてシンプルです。
<?php
use PommProject\Foundation\Pomm;
$loader = require __DIR__ . '/vendor/autoload.php';
$pomm = new Pomm(
[
'my_db' =>
[
'dsn' => 'pgsql://user:[email protected]:port/db_name'
]
]
);
$iterator = $pomm['my_db']
->getQueryManager()
->query('SELECT range_field, … ', ['parameter1', …])
;
if ($iterator->isEmpty()) {
printf("No results.\n");
} else {
foreach ($iterator as $row) {
printf(
"Range is from '%d' to '%d'.\n",
$row['range_field']->start_limit,
$row['range_field']->end_limit
);
}
}
あなたも、あなたのSQLクエリにパラメータとして範囲を使用することができます:作曲はその魔法を行っているとして、あなたのPHPファイルは同じくらい簡単になると
<?php
// …
use PommProject\Foundation\Converter\Type\NumRange;
$sql = <<<SQL
UPDATE my_table
SET …
WHERE int_field <@ $*::int4range
RETURNING field1, …
SQL;
$iterator = $pomm['my_db']
->getQueryManager()
->query($sql, [new NumRange('[1, 42)')])
;
if ($iterator->isEmpty()) {
printf("No rows updated.\n");
} else {
foreach ($iterator as $row) {
}
}
をあなたはまだと思うなら、私の回答は関係ない、私に知らせて、私はそれを削除します。
PDOまたは...を使用していますか? PDOの場合は、現在、レンジタイプをサポートしていないと思います。必要に応じて、SQLクエリの 'INT'または' INT'カラムに変換することができます。 – Nicarus
私は、Nette DIBIレイヤーを使って、私はそれがPDOに由来していると思います。 –
dibi: ドライバ:postgre ポート:5432 これはNetteフレームワークの設定ファイルの一部です –