1

两个模型作为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

4

1 回答 1

0

您可以遍历 zend_db_select (columns,from,joins,where) 的“部分”并想办法将它们附加到另一个查询中,但我不建议这样做。

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

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

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

于 2012-09-05T19:14:46.930 回答