2017-02-02 4 views
-1

나는이 열이있는 테이블이 있습니다팔콘 저장 : 업데이트하면 지정된 열만 업데이트 할 수 있습니까?

param_id 
val_value 
val_flag 
date_value 
tmp_value 
tmp_flag 

를 그리고 요소의 배열을 가지고, 난 항상 param_id 및 date_value,하지만 때때로 난 발 열과 다른 시간 나는 TMP 열이 있습니다.

때로는 db에 새 레지스터를 만들고 다른 시간에 param_id 및 date_value로 레지스터를 업데이트해야하기 때문에 $data->save()을 사용합니다.

질문 : 삽입/업데이트를 수행 할 수있는 방법이 있습니까?하지만 업데이트는 tmp 열이나 열만 업데이트합니까? 나는 First를 찾을 수있는 유일한 방법이라고 생각하지만, 아마도 다른 방법이있을 것입니다.

감사합니다.

[편집]

나는 화이트리스트와 함께 노력하고 있지만 작동하지 않습니다. 메소드가 어떻게 작동하는지 설명하겠습니다. 웹 서비스에 요청을 받고, XML을 처리하고, 수집 된 정보를 사용하여 요소 배열을 생성합니다. 이러한 요소를 처리 한 후 적절한 클래스 요소의 배열을 저장하지만 이러한 요소는 저장합니다. 새롭거나 기존 일 수 있으며 tmp 또는 val 값을 포함 할 수 있습니다.이 값으로 시도했지만 여전히 값을 null로 변경합니다.

if ($medida->tipo == 'temporal'){ 
    $whiteList = array('val_value','val_flag'); 
}else if ($medida->tipo == 'validado'){ 
    $whiteList = array('tmp_value','tmp_flag'); 
} 
$dato->save(null, $whitelist); 

I는 포스트의 데이터가없는, 내가 널 대신, I는 동일한 결과를 얻을 수있는 데이터의 수동 지정 배열을 사용하는 시도 사용. save() 방법

1) 사용 '화이트리스트'

답변

0

여기에 당신을 도울 수있는 두 가지 옵션이 있습니다.

$obj->save($this->request->getPost(), ['tmp_1', 'tmp_2']); 

자세한 정보는 the documentation입니다.

2) '이벤트 관리자'를 사용하십시오.

beforeCreate()beforeUpdate()은 사용할 필드를 결정할 때 유용합니다.

더 자세한 정보는 the documentation입니다.

0

또한 phalcon phql이 동적으로 업데이트해야하는 변경된 열만 업데이트하려는 경우에도 마찬가지입니다.

+0

'$ this-> useDynamicUpdate (true);'를 모델의'initialize' 메소드에 추가하십시오. – Timothy

+0

메소드를 초기화하지 않았으므로 이제는 아무 것도하지 않습니다. 다음과 같습니다. 'public function initialize() { \t \t $ this-> useDynamicUpdate (true); \t \t parent :: initialize(); \t} ' 이 정보가 맞습니까? – Darkerviti