将查询转换为cakePHP find语句

将查询转换为cakePHP find语句,cakephp,mysql,cakephp-1.3,Cakephp,Mysql,Cakephp 1.3,有人能帮我把这个查询转换成cakePHP的find语句吗 $sql = "select categories.id FROM categories WHERE categories.competition_id='".$id."' AND ". $logger['Compet

有人能帮我把这个查询转换成cakePHP的find语句吗

$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)
                ";

对于没有隐式模型引用的条件,您可能会遇到一些问题。例如,您可能需要输入
'Category.competition\u id'=>$id
,以便查询正确连接引用。
'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)',
)