2012-06-29 5 views
0

희망의 사람이 나를 도울 수 :CakePHP의는 : 하나의 열 -> 하나 TRUE

나는 오직 하나의 TRUE 값을 포함하는 열이 싶습니다. 행에 TRUE (또는 '1') 값을 설정하고 나머지 행이 FALSE (또는 '0')인지 확인하고 싶습니다.

어떻게 이것을 CakePHP로 얻을 수 있습니까?

+0

모든 행을 '거짓'으로 설정 한 다음 한 행을 '참'으로 설정합니다 ...? – deceze

+0

원하는 이유를 지정할 수 있습니까? 궁금해. – Poyan

답변

1

당신은 데이터베이스 수준에서이를 적용 할 수 없습니다 (물론, 당신은 당신이 트리거를 사용할 수있는 경우) 그래서 당신이 모델 ::를 BeforeSave()의 라인을 따라

뭔가를 사용하여 시행해야합니다 :

public function afterSave() { 

    if ($this->data['Model']['field'] == 1) { 
     // set all other records to false 
     $this->updateAll(array('field'=>0)); 
    } 

} 

레코드가 저장되면 '필드'가 true로 설정된 유일한 레코드 여야합니다.

+0

이 팁을 가져 주셔서 감사합니다. beforeSave()와 함께 작동하도록했습니다. – user1428033

+0

저장 중에 뭔가 실패하는 경우를 대비하여 저장 한 후에도 여전히 유혹을받을 수 있습니다. – RichardAtHome

+0

'afterSave'의'updateAll'도 방금'field'에 대해 1로 지정된 행을 0으로 설정하지 않습니까? – pbond

관련 문제