2016-12-21 1 views
1

SQL Mapper를 사용하여 MYSQL DB의 레코드를 업데이트하고 있습니다.하지만 save() 또는 update() 호출의 업데이트 결과를 확인하는 방법을 볼 수 없습니다.DB 레코드를 저장하기 위해 Fat Free Mapper 호출의 결과를 어떻게 확인합니까?

업데이트는 업데이트가 실패했는지 확인하는 확실한 방법을 제공하지 않는 전체 매퍼 개체를 반환하는 것으로 보입니다. 반환 코드를 확인하거나 예외를 잡아야합니까?

도움을 주셨습니다.

매트

답변

1

libregeek은 바로 당신은 PDO 예외를 활성화하고 그들을 잡을해야합니다

$db=new \DB\SQL($dsn,$user,$pwd,[ 
    \PDO::ATTR_ERRMODE=>\PDO::ERRMODE_EXCEPTION] 
); 

$mytable=new \DB\SQL\Mapper($db,'mytable'); 

try { 

    $mytable->copyfrom($input); 
    $mytable->save(); 
    echo 'Data successfully saved'; 

} catch(\PDOException $e) { 

    echo 'Something went wrong'; 
    // let's find what exactly: 
    $err=$e->errorInfo; 
    echo $err[0];// PDO error code 
    echo $err[2];// driver specific error message 

} 

this topic를 참조하십시오.

0

모든 맵퍼는 Cursor을 확장합니다. 문제는 커서 메소드 save()와 update()가 이것을 반환합니다.

관련 : Github에서에서이 문제를 참조하십시오 https://github.com/ikkez/f3-cortex/issues/3

방법 아웃 후크를 사용 할 수와 같은 aftersave 또는 beforesave :이 도움이

$mapper->aftersave(function($self,$pkeys){ 
    //do something after inserting or updating 
    // Maybe validate 
}); 

희망.

관련 문제