私は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"(例えば、 "id = 3"の "Person")を持つ "Person"オブジェクト、をデータベースで新しいクエリを検索せずに探したいとします。どうしたらいいですか?
つまり$persons->get(...?)?
、私はしたくない:
$personX = PersonQuery::create()->findOneById(3);
コンテキスト:
私はパフォーマンスを向上させるために、データベースクエリを作る防ぐしたいと思います。非常に効率的ではありませんが、あなたはそれを見つけるためにコレクションを行くことができる
foreach ($books as $book) {
$book['author_name'] = PersonQuery::create()->findOneById($book['author_id'])->getName();
}
を行うことができます)' :-) – Florent
j0k @:私がしようとしていましたforeachループを避けるために、私は推測する通り、あなたが示唆するように、私はそれを避けることはできません。私は、ループを使用することは、複数のデータベース接続を作成するより効率的であると思います。ご回答有難うございます! – RayOnAir
@Florent:この場合、[array_filter](http://php.net/manual/en/function.array-filter.php)関数の実装方法はわかりませんが、調査します...ありがとう! – RayOnAir