2010-08-18 4 views
1

어떤 것이 든이 쿼리를 cakePHP find 문으로 변환하는 데 도움이됩니까?쿼리를 cakePHP로 변환하십시오.

$sql = "select 
        categories.id 
       FROM 
        categories 
       WHERE 
        categories.competition_id='".$id."' AND ". 
        $logger['Competitor']['weight']. " between categories.weight_min and if(categories.weight_max>0,categories.weight_max,1000) AND ". 
        $logger['Competitor']['height']. " between categories.height_min and if(categories.height_max>0,categories.height_max,1000) AND ". 
        (date('Y')- substr($logger['Competitor']['dateofbirth'],0,4))." between categories.age_min and if(categories.age_max>0,categories.age_max,100) AND \"". 
        $logger['Competitor']['gender']."\" = categories.gender AND ". 
        $logger['Competitor']['grade']." between categories.grade_from and if(categories.grade_to>0,categories.grade_to,100) 
       "; 

답변

3
'conditions' => array(
    'competition_id' => $id, 
    intval($logger['Competitor']['weight']) . ' BETWEEN weight_min AND IF(weight_max > 0, weight_max, 1000)', 
    intval($logger['Competitor']['height']) . ' BETWEEN height_min AND IF(height_max > 0, height_max, 1000)', 
    intval(date('Y') - substr($logger['Competitor']['dateofbirth'], 0, 4)) . ' BETWEEN age_min AND IF(age_max > 0, age_max, 100)', 
    'gender' => $logger['Competitor']['gender'], 
    intval($logger['Competitor']['grade']) . ' BETWEEN grade_from AND IF(grade_to > 0, grade_to, 100)', 
) 
+1

당신은 밖으로 암시 적 모델 참조와 조건에 몇 가지 문제가있을 수 있습니다. 예를 들어, 'Category.competition_id'=> $ id'를 입력해야 쿼리가 참조를 올바르게 연결합니다. –

관련 문제