代码之家  ›  专栏  ›  技术社区  ›  thesunneversets

cakephp数据库查询-我是不是太复杂了?

  •  0
  • thesunneversets  · 技术社区  · 15 年前

    因此,我需要搜索一个房地产数据库,以查找属于与当前房地产经纪人属于同一房地产代理的房地产经纪人的所有房屋。我目前正在这样做:

    $agency_data = $this->Realtor->find('all',array(
        'conditions'=>
            array(business_name'=>$realtor_settings['Realtor']['business_name']),
        'fields'=>array('num'), 
        'recursive'=> -1
    ));
    
    foreach($agency_data as $k=>$v){
        foreach($v as $k=>$v1){
            $agency_nums[] = $v1['num'];
        }
    }
    
    $conditions = array(
        'realtor_num'=>$agency_nums
    );
    

    对于我来说,为了得到一个简单的一维ID数组,我必须如此努力地分解第一个查询的结果,这似乎有点疯狂,我可以用它来为随后的查询构建一个条件。我这样做是不是太绕圈子了?有没有一种简单的方法可以编写一个cakephp查询来通信“select*from homes where realtor_num in(select num from realtors where business_name='n')”?如果是这样的话,它会更有效率吗?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Nik Chankov    15 年前

     $agency_data = $this->Realtor->find('list',array(
        'conditions'=>array('business_name'=>$realtor_settings['Realtor']['business_name']),
        'fields'=>array('num', 'num'), 
        'recursive'=> -1
    ));
    $agency_data; //this already contain array of id's
    

    here

    $this->Realtor->find('all', array('conditions'=>array('field in (select num from realtors where business_name like "'.$some_variable.'"))));
    

        2
  •  0
  •   Dooltaz    15 年前
    $agency_data = $this->Realtor->find('all',array(
        'conditions'=>
            array('business_name'=>$realtor_settings['Realtor']['business_name']),
        'fields'=>array('num'), 
        'recursive'=> -1
    ));
    
    $conditions = Set::extract("{n}.Realtor.num", $agency_data);
    

    $conditions = Set::extract("/Realtor/num", $agency_data);