2011-03-31 2 views
2

나는 CodeIgniter에서 이러한 불이익을 겪고 있습니다. 가장 오류가 발생하기 쉬운 방법으로 결과를 확인합니다. 여기 ') (NUM_ROWS를'결과를 확인하려면?

function getByUsername($username){ 
    $this->db->where('username',$username); 
    $query=$this->db->get('user'); 

    if($query->num_rows() == 1) 
    { 
    return $query; 
    } 
} 

글쎄, 당신은 확인하실 수 있습니다, 또는 당신은 당신의 컨트롤러 나보기에서 확인할 수 있습니다 :의 나는이 코드 조각이 asume 보자. 나를 위해 그것을 확인하는 가장 좋은 장소는 모델입니다. 그러나 만약 당신이 그렇게한다면, 심지어 그것이 무엇인가를 포함하고 있다면 다시 다른 곳에서 그것을 확인해야합니다.

저는 PHP n00b입니다. 제발 도와주세요. 제가보기에 가장 쉬운 해결책이 없을 것입니다.하지만 저는 그것을 볼 수 없습니다.

답변

4

MVC는 단지 개념이므로 확실한 대답은 없으며 둘 다 실제로 잘 작동합니다.

그러나 일반적으로 이는 모델에서 가장 잘 수행됩니다. 성공하면 결과를 반환하거나 실패하면 false를 반환 할 수 있습니다.

컨트롤러는 당신이에 의견의 무리를 얻을 수 있습니다 ~

if($success) { 
    // do something 
} else { 
    // do something else 
} 

논리를 처리 할 수 ​​있으며, 그들 중 누구도 옳고 그름 수 없습니다. 그래서 예를 들어 당신의

편집

:

if($query->num_rows() == 1) 
{ 
    return $query; 
} 

return false; 

다음 컨트롤러가 될 수 있습니다

$data = $this->my_model->getByUsername($foo); 

if($data ==false) 
{ 
    die('There are no results!'); 
} 

// there's results.. 
print_r($data ->result()); 
3

나는 당신이 모델의 행 수를 확인하시기 바랍니다. 그것은 0 행을 포함하고, FALSE를 리턴해야합니다. 그렇지 않으면 조회 결과가 아닌 모델에서 배열을 리턴해야합니다.

function getByUsername($username){ 
    $this->db->where('username',$username); 
    $query = $this->db->get('user'); 

    if($query->num_rows() == 0){ 
     return FALSE; 
    } 
    return $query->result_array(); 
} 

컨트롤러에서 결과가 거짓 (또는 배열)인지 확인합니다.

$user = $this->User_model->getByUsername('Joe'); 
if($user !== FALSE){ 
    // Valid user data 
} 
else{ 
    // No user data 
} 
+0

왜 항상 result_array로 반환해야하나요? 그냥 -> result() 대신에? – toomuchcs

+0

@toomuchcs :'result_array()'는 배열을 반환하고,'result()'는 객체를 반환합니다. 원하는 것을 사용할 수 있습니다. –

+0

좋아, 나는 그걸로 혼란스러워했다. 감사! – toomuchcs

관련 문제