我正在使用Propel 1.6,我不確定如何從propel對象集合中獲取對象(給定其「id」屬性值)。我在Propel的文檔中找不到直接的答案(PropelCollection methods似乎不適用?)。例如: 可以說,我有以下模式的「人」表:如何通過propel對象集合中的「id」獲取對象?
<table name="person">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
<column name="name" type="VARCHAR" size="100" required="true"/>
</table>
我做下面的查詢得到「人」對象的集合:
$persons = PersonQuery::create()->find();
然後,我希望找到具有給定「id」的「Person」對象(例如,具有「id = 3」的「Person」),,而不向數據庫提出新的查詢。我該怎麼做?
$persons->get(...?)?
換句話說,我不想做的事:
$personX = PersonQuery::create()->findOneById(3);
語境:
我想阻止使數據庫查詢來提高性能。該聲明是要插入foreach語句,否則會導致大量的數據庫連接中,如下所示:
foreach ($books as $book) {
$book['author_name'] = PersonQuery::create()->findOneById($book['author_id'])->getName();
}
你可以用'array_filter做一個更優雅的方式()':-) – Florent
@ j0k:我試着以避免foreach循環,但我想,如你所說,我無法避免它。我認爲循環進行仍然比創建多個數據庫連接更有效率。感謝您的回答! – RayOnAir
@Florent:我不知道如何在這種情況下實現[array_filter](http://php.net/manual/en/function.array-filter.php)函數,但我會調查...謝謝! – RayOnAir