Zend_Db_Select加入Zend_Db_select

时间:2012-08-10 14:33:54

标签: php zend-framework join fetch zend-db-select

两个模型作为Zend_Db_Select个对象返回。

然后,我需要加入它们并一次获取数据。

class Model_User extends Abstract_Model { 
    public function sqlUser() { 
    return $this->select(array(
               'user_id', 'user.name', 'user.login', 'address.street', 'city.city_id', 'city.city_name','region.region_id', 'region.region_name'
            )) 
            ->joinUsing('address','address_id','') ->join('city', 'city.city_id = address.city_id', '')
            ->join('region', 'region.region_id = city.region_id', ''); 
    } 
} 

class Model_Technics extends Abstract_Model{ 
    public function sqlList() { 
        return $this->select()
                 // here some more sql
                 ->joinUsing('catalog_model','model_id',''); 
    }
}

然后我需要一些其他地方获取sqlList以及每个用户的所有信息。我不想复制所有代码,我只想通过join

从User模型加入sql

1 个答案:

答案 0 :(得分:0)

你可以遍历zend_db_select(columns,from,join,where)的“部分”,并找到一种方法将它们附加到另一个查询,但我不建议。

另一种方法可能是在您加入的模型上使用“join”方法,这将获取您的select对象并在其上运行join方法。当然,它将取决于已经在select对象中已经可用的表。或者该方法可能只是传回一个定义如何连接到连接模型表的结构,主模型可以决定如何处理它。

有很多解决方案,但是没有一种简单的方法可以将两个zend_db_select对象连接在一起,而它们之间没有一些额外的逻辑。 主要缺失的部分是两个模型之间的关系信息。

我知道这不是一个完整的答案(因为我还没有发表评论),但希望它会指向一条听起来有用的路径。