2011-02-07 13 views

答えて

1

Yiiには、ActiveRecordモデルのbeforeSave()およびafterSave()イベントメソッドがあります。 save()メソッドをオーバーライドする代わりにそれらを使用します。必要なすべてのOracleメソッドをそこに配置します。基本的に:beforeSave()のフィールドをnullにし、afterSave()はOCIParse()などでDBに値を書き込みます。

ここでは、CakeのPHPフレームワークを使用した、非常に似ています(MVCと前後のSaveメソッド)。あなたは明らかYiiの、で動作するようにこのコードを変更する必要がありますが、それは正しい軌道に乗ってあなたを取得する必要があります:Yiiの最新バージョンが現在あまりにもクエリビルダを持って

http://nik.chankov.net/2008/01/03/cakephp-and-oracle-handling-clob-fields/

、いくつかのかもしれません

http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder

幸運:あなたが書く必要がありますafterSave()コードのヘルプ!

+0

私はPDOStatement :: bindValueをPDO :: PARAM_STRで使用し、length paramはafterSaveイベントでstringのstrlenで埋められました。これは今のところ動作します。とにかく感謝と+1 – canni

0

私は今すぐそれを解決します。 また、Oracle 11gでBLOBを使用する必要があります。 イメージをoracle表に挿入したいとします。

私はそれをネット上ですべて検索し、最後にenter link description hereという解決策を見つけました。

をクリックしてください。

は私が私の代わりに

$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2'); 

によって

$db = Yii::app()->db->getPdoInstance() 

で$ DBを取得し、他のものはすべて同じである例#2

<?php 
$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2'); 
$stmt = $db->prepare("insert into images (id, contenttype, imagedata) values (?, ?, ?)"); 
$id = get_new_id(); // some function to allocate a new ID 

// assume that we are running as part of a file upload form 
// You can find more information in the PHP documentation 

$fp = fopen($_FILES['file']['tmp_name'], 'rb'); 

$stmt->bindParam(1, $id); 
$stmt->bindParam(2, $_FILES['file']['type']); 
$stmt->bindParam(3, $fp, PDO::PARAM_LOB); 

$db->beginTransaction(); 
$stmt->execute(); 
$db->commit(); 
?> 

に従ってください。

幸運を祈る!

関連する問題