2012-04-10 25 views
1

要求Propel檢查現有對象(檢索的或新創建的)是否符合某些條件的最佳方法是什麼? 我不知道Propel是否有本地能力來做到這一點:-)我在問簡單的方法,因爲這樣做複雜的方式很容易。 理想情況下是這樣的:推進:測試現有對象以匹配標準

$fruit = FruitPeer::doSelectOne(new Criteria); // get whatever fruit 

    $crit1 = new Criteria; 
    $crit1->add(FruitPeer::REF_COLOR, 'green');  // criteria for green fruits 

    if ($fruit->matches($crit1)) {     // check if my fruit is green 
     echo 'My fruit is green'; 
    } 

回答

1

這是不可能在一個簡單的方法,因爲標準的對象是隻用於生成SQL查詢和不匹配的對象。但是,您可以再次查詢數據庫。當Propel的實例池檢測到查詢對象的實例已經存在時,應該避免再次檢索所有數據。

0

你可以做的最簡單的事情是在你的主鍵上添加一個條件,然後發出一個計數。

如果你有一個查詢(ModelCriteria實例,而不是一個簡單的Criteria實例),你可以在一行做到這一點:

if($critQuery1->filterByPrimaryKey($fruit->getPrimaryKey())->count() > 0) {…} 
相關問題