是否可以在Doctrine模型中設置約束,以便使用該模型的所有查詢都包含此要求?例如,如果我有一個汽車模型,並且我想確保使用該模型檢索的所有結果都在數據庫中設置了active = 1
。我可以在每個單獨的查詢中定義它,但似乎可能有更好的方法。在Doctrine模型中設置所需值
乾杯!
是否可以在Doctrine模型中設置約束,以便使用該模型的所有查詢都包含此要求?例如,如果我有一個汽車模型,並且我想確保使用該模型檢索的所有結果都在數據庫中設置了active = 1
。我可以在每個單獨的查詢中定義它,但似乎可能有更好的方法。在Doctrine模型中設置所需值
乾杯!
我想借此模型中其驚人的前置和後置掛鉤的優勢。
例子:
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']);
}
}
希望這有助於!
我會在查詢 - >和這裏('active =?',1)做到這一點,但如果你想做這個「棘手的方式」,你總是可以建立自己的水化器。
這裏是你的問題的答案:subclassing教條查詢對象。
http://brentertainment.com/2010/03/03/doctrine_query_extra-extending-the-doctrine-query-object/
好問題!我也想回答這個問題。在我的情況下,我總是希望仍然活躍的用戶。 – Kennethvr 2010-11-15 10:49:39