在Doctrine模型中设置所需的值

时间:2010-11-15 10:36:03

标签: php sql doctrine doctrine-1.2

是否可以在Doctrine模型中设置约束,以便使用该模型的所有查询都包含此要求?例如,如果我有 Car model ,并且我想确保使用模型检索的所有结果都在数据库中设置了active = 1。我可以在每个单独的查询中定义它,但似乎可能有更好的方法。

干杯!

3 个答案:

答案 0 :(得分:1)

我会在模型中利用他们惊人的前后挂钩。

示例:

class Model_Car extends Model_Base_Car
{
    public function preDqlSelect(Doctrine_Event $event)
    {
        $event->getQuery()->addWhere("active = ?", 1);
    }
}

虽然我没有对此进行测试,但它应该可行。我过去常常使用前后挂钩来让我的生活变得更轻松。例如,我有一个模型想要在每个插入和更新上保存REMOTE_ADDR,所以我做了以下操作让我的生活更轻松:

class Model_Example extends Model_Base_Example
{
    public function preInsert(Doctrine_Event $event)
    {
        $this->created_ip = $this->_getRemoteIp();
    }

    public function preUpdate(Doctrine_Event $event)
    {
        $this->updated_ip = $this->_getRemoteIp();
    }

    protected function _getRemoteIp()
    {
        return ip2long($_SERVER['REMOTE_ADDR']);
    }
}

希望这有帮助!

答案 1 :(得分:0)

我会在查询中执行此操作 - > andWhere('active =?',1),但是如果你想要做这个“棘手的方法”,你可以随时建立自己的保湿器。

答案 2 :(得分:0)

这里是你的问题的答案:继承doctrine查询对象。

http://brentertainment.com/2010/03/03/doctrine_query_extra-extending-the-doctrine-query-object/