2012-06-16 1 views
2

젠드와 함께 일하고 있는데 DB에있는 행이 이미 존재하는지 (내가 얻었던 중복 키 오류를 제거하는 간단한 솔루션) 있는지 확인해야했습니다. 내가해야한다면 내가 몇 가지를 시도했지만 아무것도 코드 다음 db_row가 있는지 확인하는 올바른 방법입니까?

그래서 내가 쓴합니다 ( Zend_Validate_Db_NoRecordExists에게 예를 들어 방법) ... 일 것 같았다이 그것을 할 수있는 유효한 방법이 있는지 궁금했다, 또는 다른 일을 : 모델에서

:

$where = $condition = array(
     'user_id = ' . $user_id, 
     'page_id = ' . $page_id 
     ); 

     $check = $this->fetchRow($where); 

     if(count($check) > 0) { 

      return null; 

     }else{ 
       // Here I create a new row, fill it with data, save and return it. 
     } 

및 다음 내보기 :

if($this->result != null) { /* do stuff */ }else{ /* do other stuff */ } 

이 작업을 수행하지만 (때문에 추가 질의의, 대만족) 시간이 더 걸릴 것으로 보인다 않으며 나는이 고수할지 여부를 좀 확실 해요 ..

상관 추천

답변

2

: 환영 가정입니다 당신은 당신이

if($this->row_not_found) 
{ 
}else { 

} 
+0

아를 할 수있는 컨트롤러

보기에
$row = $this->fetchRow($where); //If no row is found then $row is null . if(!$row) { $row = $dbTb->createNew($insert); //$insert an associative array where it keys map cols of table $row->save(); $this->view->row_not_found = true; } return $row; 

에서 함수를 코딩 한! 행을 찾지 못하면 fetch 메소드가 자동으로 null을 반환한다는 것을 잊었습니다. 새로운 데이터를 삽입하기 위해 사용하는 방법은'$ row = $ this-> createRow' 그리고'if ($ row) {$ row-> user_id = $ user_id .. etc.'입니다. – Cooleronie

+0

하지만! wait .. now $ row는 항상 값으로 반환됩니다. 행이 이미 존재하는 경우 NULL을 반환해야합니다. ** 그것이 내 관점에서 알아야 할 것이기 때문에 ** 존재합니다! {else {return null}을 추가했습니다. 매력처럼 작동합니다. – Cooleronie

+0

@Cooleronie이 (가) 내 ans을 업데이트했습니다. –