1

Doctrine を使用した私のアプリケーションでは 4 です。

そこで、次の教義コマンドを使用して人物オブジェクト コレクションを取得しています

//query
$people = $q->execute();

これは 20 個のオブジェクトを返します。person オブジェクトの主キーは、3 つの属性を持つ複合キーです。それらは

id
department_id
name

次のように検索して人物オブジェクトを取得する必要があります。

$id = 10;
$department_id = 1;
$name = "abc";

$people->get($id, $department_id, $name);

しかし、これは機能せず、正しい結果が得られません。これを試してみたところ、コレクションの主キーが設定されていないように見えるnullの結果が得られました。

$people->getKeyColumn();

コレクションで foreach ループを実行して処理したくありません。約 500 人を扱うと、アプリケーションの速度が低下するからです。

教義コレクションから値を取得するために、この問題を手伝ってくれる人がいますか?

4

2 に答える 2

1

このようなものを使用できますか?

  $people = Doctrine::getTable('Persons')
    ->createQuery()
    ->where('id = ? AND department_id = ? AND name = ?', array($id, $department_id, $name))
    ->execute();

提供されたパラメーターによって既にフィルター処理された DoctrineCollection を取得します。

「Persons」はDoctrineのモデル名であり、mySQLのテーブル名ではありません。

于 2013-03-08T09:13:14.417 に答える
0

Doctrine のマジック ファインダーも使用できますfindBy*()

$people = Doctrine_Core::getTable('Persons')
    ->findByIdAndDepartmentIdAndName($id, $department_id, $name);
于 2013-03-14T10:07:08.343 に答える