无法使 SQL Mapper 的 copyfrom() 方法在 Fat Free Framework 中工作

Can't get SQL Mapper's copyfrom() method to work in Fat Free Framework

我正在尝试让 copyfrom 在我正在开发的 PHP 应用程序中工作。

这是附加到我的 PUT /api/visitor/@id 路由的函数:

public function update($f3, $params) {

    $data = json_decode( $f3->get('BODY'), true );

    $visitor_id = $params['id'];
    $visitor = new \Models\Visitor();

    $visitor->load(array('id = ?', $visitor_id));

    // if mapper object is hydrated copy from request body
    if(!$visitor->dry()) {
      $visitor->copyFrom($data);
    }   

    $visitor->save();
}   

我的访问者模型扩展了 \DB\SQL\Mapper,并且我的 $data 的键匹配我的映射器对象的属性,但 $data 并不总是包含每个映射器对象的键 属性。数组是否需要包含每个映射器对象的键 属性?

无论如何,存储在关联数组$data 中的信息不会存储在数据库中。

我也尝试过 copyfrom() 和 copyFrom()。我在文档和其他示例中都看到了。

知道我做错了什么吗?

Does the array need to contain a key for every single mapper object property?

没有

但是,数组输入仅在 F3 v3.5 中可用。如果你是运行v3.4或以下,你需要先把你的数据放到一个hive key中。

if(!$visitor->dry()) {
  $f3->set('data',$data);
  $visitor->copyFrom('data');
}