2017-04-13 47 views
0

我试图插入使用fatfreeframework v3.5的copyFrom('POST')和save()方法的记录。来自POST的数据不包含该表被设置为自动增量的ID字段。从日志的SQL是fatfreeframework与SQL Server数据库使用映射器copyfrom方法部分插入

SET IDENTITY_INSERT [xrefs] ON; 

INSERT INTO [xrefs] ([status], [supply_id], [description], [unit], [unitcost], [cap], [rev], [buq]) 
VALUES ('test', 'Htest', 'test', 'test', '1', '1', 1, 1) 

正如你可以看到尽管存在包含在插入没有ID列fatfree是将设定的标识插入。有没有办法告诉映射器不要设置这个标志?还是有另一种解决方法?我可以得到当前的最大ID,然后插入+1,但看起来很笨重。

我应该添加此SQL失败,因为id列不包含在列列表中。

$this->db->exec(
      (preg_match('/mssql|dblib|sqlsrv/',$this->engine) && 
      array_intersect(array_keys($pkeys),$ckeys)? 
       'SET IDENTITY_INSERT '.$this->table.' ON;':''). 
      'INSERT INTO '.$this->table.' ('.$fields.') '. 
      'VALUES ('.$values.')',$args 
     ); 

这是在mapper.php函数插入中设置IDENTITY_INSERT的代码。

$this->logger->write('xrefs schema:'. 
    json_encode($this->tongpodb->schema('xrefs'))); 

调用的db对象上架构还给此数组 { “ID”:{ “类型”: “INT”, “pdo_type”:1, “默认”:NULL, “可为空的”:假, “p键”:真正}, “changed_date”:{ “类型”: “日期时间”, “pdo_type”:2, “默认”:空, “可空”:真, “p键”:假}, “状态”: { “类型”: “VARCHAR”, “pdo_type”:2, “默认”:NULL, “可为空的”:假, “p键”:假}, “supply_id”:{ “类型”: “VARCHAR”, “pdo_type” :2, “默认”:NULL, “可为空的”:假, “p键”:真}, “说明”:{ “类型”: “VARCHAR”, “pdo_type”:2, “默认”:NULL, “可为空的” :真, “p键”:假}, “单元”:{ “类型”: “VARCHAR”, “pdo_type”:2, “默认”:NULL, “可为空的”:假, “p键”:假},“HCPCS “:{” 类型 “:” 字符 “ ”pdo_type“:2, ”默认“:空, ”可空“:真, ”p键“:假}, ”unitcost“:{ ”类型“: ”十进制“,” pdo_type “:2,” 默认 “:NULL,” 可为空的 “:假,” p键 “:假},” 帽 “:{”类型 “:” 小数”, “pdo_type”:2, “默认”:NULL, “可为空的”:假, “p键”:假}, “REV”:{ “类型”: “SMALLINT”, “pdo_type”:1 “默认”:空, “可空”:假的, “p键”:假}, “BUQ”:{ “类型”: “SMALLINT”, “pdo_type”:1, “默认”:空, “可空”:真, “p键”:假}, “create_ts”:{ “类型”: “日期时间”, “pdo_type”:2, “默认”:空, “可空”:真, “p键”:假}, “log_ts”: { “类型”: “诠释”, “pdo_type”:1, “默认”:空, “可空”:真, “p键”:假}, “文件名”:{ “类型”: “VARCHAR”, “pdo_type” :2, “默认”:NULL, “可为空的”:真, “p键”:假}, “LINE_NO”:{ “类型”: “SMALLINT”, “pdo_type”:1, “默认”:NULL, “可为空的” :true,“pkey”:false},“file_ts”:{“type”:“datetime”,“pdo_type”:2,“default”:null,“nullable”:true,“pkey”:false}}

正如你可以看到ID有一个“pkey”:真正的条目,所以你可以看看后的字段,然后看看这个,并确定是否需要设置IDENTITY_INSERT。也许我会执行这个。我担心这是高于我的薪酬水平。

+0

请在框架bug跟踪器上报告该问题:github.com/bcosca/fatfree-core/issues – xfra35

+0

我现在已经做到了。所以你认为这是一个错误?谢谢 –

回答

0

已更新至fatfree的最新版本修复此问题。

相关问题