次のようなクエリがあるとします。
SELECT *, (CUSTOM_EXPRESSION) as virtualfield FROM users
ユーザーのエンティティ自体には「仮想フィールド」がありますが、テーブルにはこのフィールドがないため、マッピング注釈にはありません。
生の SQL として実行されると仮定すると、エンティティに上記のフィールドをどのように入力すればよいでしょうか?
次のようなクエリがあるとします。
SELECT *, (CUSTOM_EXPRESSION) as virtualfield FROM users
ユーザーのエンティティ自体には「仮想フィールド」がありますが、テーブルにはこのフィールドがないため、マッピング注釈にはありません。
生の SQL として実行されると仮定すると、エンティティに上記のフィールドをどのように入力すればよいでしょうか?
私は答えを見つけました。そのためには、スカラー値を使用する必要があります。例えば:
$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', // ... ), // ...)
次に、必要に応じてループして、オブジェクトにプロパティを設定できます。
あなたが何を求めているのか完全にはわかりません。users.virtualfield を (CUSTOM_EXPRESSION) で更新する方法を知りたいと思いますか? その構文は次のようになります。
update users set virtualfield = (CUSTOM_EXPRESSION)
すべての行を更新したい場合。
私が的外れな場合は、質問を明確にしてもらえますか?