2012-02-06 45 views
0

簡單的Propel reusing query在這裏不起作用,儘管我的代碼類似於Propel網站上的例子。 這是一個錯誤還是我的不好?重用Propel查詢錯誤還是我的不好?

$q = MashupSettingQuery::create()->filterByMashup($this); 
var_dump($q->count(), $q->findOneByKey('redirect_uri'), $q->count()); 

輸出是:

int 5 

object(MashupSetting)[28] 
    protected 'startCopy' => boolean false 
    protected 'id' => int 9 
    protected 'key' => string 'redirect_uri' (length=12) 

int 1 

就是resusing不工作,因爲count()第一返回5,然後按1

即使使用MashupSettingQuery::create()->filterByMashup($this)->keepQuery(true)沒有解決問題。

+0

根據文檔,它應該工作..否則,你發現了一個錯誤。 – 2012-02-06 22:58:28

回答

1

我認爲這很正常,因爲就在第二次計數之前,你做了一個findOneByKey查詢,所以第二個計數只計算了這個特定查詢返回多少個對象。 而你的查詢只返回一個對象,顯然是因爲它是一個findOneByKey。

+0

Maxime是對的。但是,find *是terminaison方法,所以它不應該影響查詢,顯然情況並非如此。 findOneByKey將向查詢添加一個filterKey()和一個限制(1)。 – 2012-02-08 23:36:33

+0

@WilliamDURAND如何在Propel中重用查詢?我的例子有什麼問題? – gremo 2012-02-16 23:08:12

+0

如果你想執行兩次命令,你需要創建兩個命令變量。 Like: $ q = MashupSettingQuery :: create() - > filterByMashup($ this); $ q2 = clone $ q; $ q-> findSomething(); $ q2-> findSomethingElse(); – Maxime 2012-02-19 16:19:24