如何检查 Fat Free Mapper 调用的结果以保存数据库记录?

How do I check the result of a Fat Free Mapper call to save a DB record?

我正在使用 SQL 映射器更新我的 MYSQL 数据库中的记录,它工作正常 - 但我看不到如何检查更新的结果来自调用 save() 或 update()。

更新似乎 return 整个映射器对象,它没有提供明显的方法来检查更新是否失败。我应该检查 return 代码还是捕获异常?

感谢任何帮助!

马特

所有映射器都扩展 Cursor。问题是游标方法 save() 和 update() return this.

相关:在 Github 上查看此问题:https://github.com/ikkez/f3-cortex/issues/3

出路可能是使用钩子,例如aftersavebeforesave:

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

希望这对您有所帮助。

如果您在初始化 DB 对象时启用它,您可能会得到 PDO 样式的异常。

参考https://fatfreeframework.com/3.6/sql

PDO 异常参考: http://php.net/manual/en/class.pdoexception.php

P.S: 没试过,不知道有用多少

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

}

另见