0

私は中規模の Symfony2 プロジェクトに取り組んでいます。いくつかのドクトリンエンティティを使用しているときに、次の「エラー」に固執しました。

3 つのフィールドを持つエンティティがあります。

<entity name="xxx\yyyBundle\Entity\ABTexte" table="ABTexte">
    <id name="Nr" type="integer" />
    <field name="OID" type="integer" />
    <field name="Text" type="string" />
    <many-to-one target-entity="xxx\yyyBundle\Entity\ABKopf" field="ABKopf" inversed-by="ABTexte">
        <join-column name="OID" referenced-column-name="OID" on-delete="CASCADE" />
    </many-to-one>
</entity>

$repo->findBy() を使用して 1 つ以上のエンティティをロードした後、間違ったデータ型のエンティティを受け取りました。私の結果は次のとおりです。

$ABKopf->Nr (int)
$ABKopf->Text (string)
$ABKopf->OID (string)     <===== !!!!!!!!!

アプリケーションがこの値を整数として取得することは非常に重要です。この動作の原因は何ですか?

PS: すべての値は、正しいデータ型のデータで埋められます。例: OID = 999000

整数列を外部キーとして使用すると(多対1の関係...)、教義は常にそれを文字列として返すことを確認しました

ABKopf での関係:

<entity name="xxx\yyyBundle\Entity\ABKopf" table="ABKopf">
    <id name="OID" column="OID" type="integer" />
    <field name="ABNr" column="ABNr" type="integer" />
    <!-- ... -->
    <one-to-many target-entity="xxx\yyyBundle\Entity\ABTexte" field="ABTexte" mapped-by="ABKopf" />
</entity>

ABTexte-エンティティ: https://gist.github.com/715f3881a57cdd8a7d23

4

1 に答える 1

0

あなたのコメントに基づいて

PS: 最初は列 OID のデータ型を定義しなかったため、varchar(255) / string でした。その後、データ型を整数に変更し、doctrine:generate:schema コマンドを使用してデータベースの列を更新しました...

エンティティを生成するための「教義プロセス」全体を説明します。

まず、Doctrine にエンティティーの作成方法、相互リンク方法などを指示するアノテーションまたは yml、xml、ecc を使用して PHP クラスを作成します。

2 番目のステップは、自動化された方法でゲッターとセッターを生成することですdoctrine:generate:entities

重要

3番目のステップは、スキーマについて何かを変更したい場合、次のコマンドを使用することですdoctrine:schema:update --force

重要終了

それdoctrine:generate:schemaはあなたが期待していることをしないと思います。
3番目のステップで書いたコマンドで試してください

于 2013-01-25T08:24:08.360 に答える