2

私は単純な機能を持っています

function getitembyid($id)
{
    $item = $em->find('models\Item', $id);
    return $item;
}

私は自分のアプリケーションでこの関数をよく使用しています。たとえば、次のようにも使用しています。

$item = getitembyid($id);
$item->setName($name);
$em->flush();

item テーブルの 1 つの列に大量のテキスト データが含まれているため、このクエリが非常に遅くなることがあるという問題が発生しました。(通常のSQLでテストされ、その1列なしで選択すると高速になり、そうでない場合は遅くなります)

その列の選択を回避し、アプリケーションの機能を損なうことなく、単純な関数を変更する方法はありますか (行の更新は、その大きな列に触れずに機能する必要があります)

4

1 に答える 1

2

これは部分オブジェクト アプローチです。試す:

$item = $em->createQuery("select partial i.{id,name} from models\Item i")
           ->getResult();

部分オブジェクトの詳細: http://docs.doctrine-project.org/en/latest/reference/partial-objects.html

于 2013-04-23T16:44:08.597 に答える