2017-04-13 6 views
0

fatfreeframework v3.5의 copyFrom ('POST') 및 save() 메서드를 사용하여 레코드를 삽입하려고합니다. POST의 데이터에는이 테이블에 대한 자동 증가로 설정된 id 필드가 없습니다. 당신이 fatfree가 삽입에 포함 된 어떤 id 컬럼이없는 사실에도 불구하고 집합 정체성 삽입을 추가 볼 수 있듯이 로그에서 SQL은부분 삽입이 포함 된 매퍼 copyfrom 메서드를 사용하여 SQL Server 데이터베이스에서 fatfreeframework

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를 얻은 다음 +1을 삽입 할 수 있지만 그게 어색해 보입니다.

id 열이 열 목록에 포함되어 있지 않으므로이 SQL을 추가해야합니다.

$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 function insert에 IDENTITY_INSERT를 설정하는 코드입니다. 하여 DB 객체에 대한 스키마를 호출

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

이 배열을 다시 제공 { "ID": { "유형": "INT", "pdo_type": 1, "기본"널 (null) "null 허용"거짓 , "pkey": true}, "changed_date": { "type": "datetime", "pdo_type": 2, "default": null, "nullable": true, "pkey": false}, "status" { "type": "varchar", "pdo_type": null, "nullable": false, "pkey": false}, "supply_id" : null, "nullable": false, "pkey": true}, "설명": { "type": "varchar", "pdo_type": 2, "default": null, "nullable" true, "pkey": false}, "unit": { "type": "varchar", "pdo_type": 2, "default": null, "nullable": false, "pkey": false}, "hcpcs "unitcost": { "type": "10 진수", "10 진수", "10 진수", " pdo_type ": 2,"default ": null,"nullable ": false,"pkey ": false},"cap ": {" 2 ","default ": null,"nullable ": false,"pkey ": false},"rev ": {"type ":"smallint ","pdo_type ": 1 , "default": null, "nullable": false, "pkey": false}, "buq": { "type": "smallint", "pdo_type": 1, "default": null, "nullable": true , "pkey": false} "false", "create_ts": { "type": "datetime", "pdo_type": 2, "default": null, "nullable" "filename": { "type": "varchar", "pdo_type": null, "nullable": true, "pkey": false} : null, "nullable": true, "pkey": false}, "line_no": { "type": "smallint", "pdo_type": 1, "default": null, "nullable" : true, "pkey": false}, "file_ts": { "type": "datetime", "pdo_type": 2, "default": null, "nullable": true, "pkey": false}}

id는 "pkey": true 항목을 가지고 있으므로 게시물의 필드를보고 IDENTITY_INSERT를 설정해야하는지 확인할 수 있습니다. 아마도 이것을 구현할 것입니다. 이건 내 돈벌이보다 높을 까봐 걱정이야.

+0

프레임 워크 버그 추적기에서 해당 문제를보고하십시오 : github.com/bcosca/fatfree-core/issues – xfra35

+0

이제 완료했습니다. 이게 버그라고 생각하니? 감사 –

답변

0

fatfree의 최신 버전으로 업데이트하여이 문제를 해결했습니다.

관련 문제