私は PHP と Propel の初心者です。
私が読んだように、Propel はクエリを再利用するためにインスタンス プールを取得しました。
例えば
<?php
// first call
$author1 = AuthorQuery::create()->getByFooField('foo');
$foo = $author1->getId();
// SELECT query
...
// second call
$author2 = AuthorQuery::create()->getByFooField('Foo');
// Skips the SQL query and returns the existing $author1 object
$foo = $author2->getId();
その事は
このオブジェクトは何回生きていますか? これは、Excel を解析し、いくつかのオブジェクトを作成してデータベースに永続化する必要があるためです。
したがって、100 行で読み取った Excel では、「foo」を 25 回読み取った可能性があります。したがって、24 回のクエリを回避できれば、PK を取得するために毎回データベースにクエリを実行するのは悪いことです。
Instance Propel がこの問題を解決しているように見えますが、何回分かはわかりません。
それは、時間、使用されるメモリ、またはクエリが実行されるスコープのようなものに依存しますか? (つまり、おそらく最初のクエリを実行するメソッドの後、インスタンス プールがクリアされるため、2 番目のクエリが同じメソッド内にない限り、db に再度クエリを実行します。または、オブジェクトが生きている間は実行しません。知りません)
私は少し検索しましたが、何も見つかりませんでした.私の直感は、使用されているメモリに依存することを教えてくれますが、公式なものは何もありません.
または、これを行うためのより良い方法があるかもしれません。