2011-10-18 6 views
0

このような何かを行う方法はあります:(ダムコード)Doctrine2のエンティティフィールド値としてSQL式を渡す方法はありますか?

$entity = new Entity\SomeEntity(); 

$entity->mappedField = new SQLExpression('SOME SQL CODE HEARE'); 

$entityManager->persist($entity); 
$entityManager->flush(); 

[EDIT] 私は、Oracle tablespace.sequence_name.next値のシーケンスからIDを挿入するには、私はこれは、トリガーから行うことができることを知っているが、私のアクセスユーザーは、私のENVでトリガを作成することができません。

+0

SQLコードは何ですか?これを行う良い方法があるかもしれませんが、Doctrineはデータベースに抽象化を提供するためにここに生のSQLを書くべきではありません。 –

+0

@Matthieu See編集 – canni

答えて

0

doctrine2で回答できません

1

あなたが達成しようとしていることについて質問した方がずっと効果的です。

私が知る限り、Doctrine2は、ドメインモデルを永続層と混合することに非常に特有のものです。これにより、ドメイン層と永続層が結合されます。

達成しようとしていることは何ですか?あなたはおそらく、イベントリスナーに最も適していますが、私はどの問題を解決しようとしているのかよくわかりません。

+0

編集を参照してください – canni

0

Doctrine2エンティティがSQLフィールドをマップすることを覚えておく必要があります。すべてのデータ型をデータベースにマッピング可能にする必要があります。

文字列はvarcharまたはblobになり、整数はintなどになります。オブジェクトには、1つの例外を除いて、対応するデータ型はありません。オブジェクトリレーショナルデータマッパードクトリンは、オブジェクト(EntityまたはEntityCollection)を関連するテーブルにマップすることができます(関連するテーブルが定義されている場合)。あなたは実際にDoctrineがofficial tutorialに記述されているようにこれらを定義する機能を詳しく見てください。

関連する問題