2011-02-07 4 views

답변

1

YII는이를 BeforeSave()하고 액티브 모델의에서 afterSave() 이벤트 방법. 나는 save() 메소드를 오버라이드하는 대신에 그것들을 사용할 것이다. 거기에 필요한 오라클 메소드를 모두 넣으십시오. 기본적으로 beforeSave()의 필드를 null로 설정 한 후 afterSave()는 OCIParse() 등을 사용하여 DB에 값을 씁니다.

다음은 Cake PHP 프레임 워크를 사용하는 블로그에 관한 좋은 기사입니다. 매우 유사합니다 (MVC와 저장 메소드 전후). 당신은 분명히 YII, 작업이 코드를 수정해야합니다,하지만 바른 길에 당신을 얻을해야합니다 YII의 최신 버전은 이제 너무 쿼리 빌더를 가지고

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

, 일부의 수 있습니다 afterSave() 코드에 도움이 당신이 작성해야합니다

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

행운을 빕니다!

+0

Heh, 내 질문에 깜빡;] 나는 PDOStatement :: bindValue를 PDO :: PARAM_STR 및 length param을 afterSave 이벤트의 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(); 
?> 

을 따르십시오.

행운을 빈다.

관련 문제