2010-11-15 44 views
1

是否可以在Doctrine模型中設置約束,以便使用該模型的所有查詢都包含此要求?例如,如果我有一個汽車模型,並且我想確保使用該模型檢索的所有結果都在數據庫中設置了active = 1。我可以在每個單獨的查詢中定義它,但似乎可能有更好的方法。在Doctrine模型中設置所需值

乾杯!

+0

好問題!我也想回答這個問題。在我的情況下,我總是希望仍然活躍的用戶。 – Kennethvr 2010-11-15 10:49:39

回答

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']); 
    } 
} 

希望這有助於!

0

我會在查詢 - >和這裏('active =?',1)做到這一點,但如果你想做這個「棘手的方式」,你總是可以建立自己的水化器。