CodeIgniter ve PostgreSQL - Fonksiyon dönen refcursor dan Veri alınıyor

2 Cevap php

Ben verileri seçer ve aşağıdaki beyanı benzer bir refcursor, yoluyla döndüren bir PostgreSQL işlevi vardır:

CREATE OR REPLACE FUNCTION my_function()
  RETURNS refcursor AS
  ...

Nasıl bir CodeIgniter modeli ile bu işlevin veri almak mı? Doğrudan veri dönmez gibi ben sadece işlevi doğrudan seçemezsiniz.

2 Cevap

Durumda herkes ilgileniyor, bir yazı php.net aşağıdaki çözümü verdi:

protected function dbquery($query){
  pg_query("BEGIN;");
  $tr=pg_query($query);
  $r=pg_fetch_row($tr);
  $name=$r[0];
  $rs=pg_query("FETCH ALL IN \"" . $name . "\";");
  pg_query("END;");
  return $rs;
}

Şöyle modelinde kadar kablolu edilebilir:

$query = $this->dbquery("SELECT * FROM my_function()");

while ($row = pg_fetch_assoc($query))
{
   array_push($result, array('my_column' => $row['my_column'] ));
}

Bir ideal çözüm (muhtemelen refactored rağmen) CI Postregs sürücü işlevlerini kullanmak değildir, ama işe yarıyor gibi.

Yukarıdaki sorunun cevabı CI aktif kayıt sınıfın yararlanmak değildir. CI bunu yapmak için sadece özel bir sorgu çalıştırın.

Örneğin:

$sql = "CREATE OR REPLACE FUNCTION... "
$this->db->query($sql);