繁体   English   中英

扩展zend db select

[英]extending zend db select

我正在建立一个CMS类型的网站,会有很多管理员用户。 ACL已用于业务层。 但现在我们要将自定义ACL逻辑应用于基于admin用户所属城市的模型。

例如:管理员用户来自纽约。 他可以查看与纽约市相关的内容。

我在模型中使用Zend_Db_Select构建了很多查询。 现在我已经在各处更改了查询。 有没有办法,我可以为每个查询添加逻辑 - > where('u.city_id =?',$ admin_user_city_id)。

提前致谢。

谢谢Venu

我认为您可能不需要扩展Zend_Db_Table_Select 您可以通过仅使用My_Db_Table_Abstract扩展Zend_Db_Table_Abstract来完成您正在寻找的My_Db_Table_Abstract ,您的所有模型也将扩展。 在该抽象类中,您将扩展返回Zend_Db_Table_Select的默认select() ,并在返回之前,只需将where子句添加到它。

因此,每次使用$myModel -> select()调用select时,它都会包含where子句。

abstract class My_Db_Table_Abstract extends Zend_Db_Table_Abstract
{
    public function select($withFromPart = self::SELECT_WITHOUT_FROM_PART)
    {
        $select = parent::select($withFromPart);
        # Retreive $admin_user_city_id
        $select -> where('u.city_id = ?', $admin_user_city_id);
        return $select;
    }
}

当然,这也意味着你已经做出了正确的加入到你的u表将取决于你在模型上的某个地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM