2

次のようなクエリがあるとします。

SELECT *, (CUSTOM_EXPRESSION) as virtualfield FROM users

ユーザーのエンティティ自体には「仮想フィールド」がありますが、テーブルにはこのフィールドがないため、マッピング注釈にはありません。

生の SQL として実行されると仮定すると、エンティティに上記のフィールドをどのように入力すればよいでしょうか?

4

2 に答える 2

1

私は答えを見つけました。そのためには、スカラー値を使用する必要があります。例えば:

$rsm = new \Doctrine\ORM\Query\ResultSetMappingBuilder($this->getEntityManager());
$rsm->addRootEntityFromClassMetadata('Category', 'c');
$rsm->addScalarResult('depth', 'depth');
// [ ... ]
$results = $q->execute();
// Output will be a two-dimensional array 
// array(0 => array(0 => CategoryObject, 'depth' => 'scalar-value', // ... ), // ...)

次に、必要に応じてループして、オブジェクトにプロパティを設定できます。

于 2012-03-23T02:23:05.567 に答える
0

あなたが何を求めているのか完全にはわかりません。users.virtualfield を (CUSTOM_EXPRESSION) で更新する方法を知りたいと思いますか? その構文は次のようになります。

update users set virtualfield = (CUSTOM_EXPRESSION)

すべての行を更新したい場合。

私が的外れな場合は、質問を明確にしてもらえますか?

于 2012-03-16T15:55:54.693 に答える