PHP ORM-Doctrine 2の注記参照(Annotations Reference)

2923 ワード

概要
いくつかのフォームでドキュメントブロックのコメントを使用したことがあるかもしれませんが、これはドキュメントのメタデータ(Metadata)を提供するツールに似ています.例えば、PHPDocumentor(phpコードのコメントを利用してドキュメントを生成するツール:@author@linkなどjavaでこのようなツールが一般的に使用されています).ドキュメントブロック注釈ツールは、jsonデータがjs配列に解析されるように、コードで解析できるメタデータをドキュメントの一環に埋め込んでいます.次に、これらの一般的なannotation構文について説明します.
annotationの実装はDoctrineCommonAnnotationsの下にある
参考説明
@Column
注記をマークするインスタンス変数は永続化され、phpドキュメントのクイックコメントのインスタンス変数でなければならない.この変数に格納されている値はすべて保存され、エンティティのライフサイクルの一部としてデータベースからロードされます.
@Columnで必須のプロパティ:
  • type:doctrineのタイプで、phpとデータベースプレゼンテーションの間で
  • を変換します.
    @Columnでオプションのプロパティ:
  • name:この属性はデータベース内のフィールド名に対応し、定義しない場合、テーブルフィールド名はこの注釈の変数名と同じ
  • であるべきである.
  • length:string文字列タイプのフィールドにデータベース内の文字列の最長長を示す.Doctrine自体は文字列の長さを検証しません.
  • precision:10進数で表す精度(10進数のフィールドのみ)
  • scale:10進数の範囲(10進数フィールドのみ)
  • unique:名前が一意の値であるかどうかtrue falseのみであるかどうか、フィールドが一意であるべきかどうかを決定する
  • nullable:NULLにできるかどうかは、データベースが空のオプションと同じ
  • です.
  • columnDefinition : DDL SQL snippet that starts after the column name and specifies the complete (non-portable!) column definition. This attribute allows to make use of advanced RMDBS features. However you should make careful use of this feature and the consequences. SchemaTool will not detect changes on the column correctly anymore if you use “columnDefinition”. (understand by your understanding)補足:typeプロパティはphpとデータベース値の間の変換を操作することを忘れないでください.1つのフィールドでjoinの2つのテーブルをこのプロパティで表す場合は、後の@JoinColumnインスタンスコード:
  • を参照してください.
    <?php
    /** 
    * @Column(type="string", length=32, unique=true, nullable=false) 
    */
    protected $username;
    /** 
    * @Column(type="string", columnDefinition="CHAR(2) NOT NULL") 
    */
    protected $country;
    /** 
    * @Column(type="decimal", precision=2, scale=1) 
    */
    protected $height;

    @ColumnResult
    sqlクエリのselectフレーズのフィールドの参照名.この注釈は、メタデータに設定ことにより、クエリ結果に結果範囲を含めることができる.
    @ColumnResultの必須属性:
  • name:sql文のselectフレーズのフィールド名
  • @Cache
    キャッシュメカニズムをトップレベルのエンティティまたはコレクションに追加します.
    @Cacheオプションのプロパティ:
  • usage:選択可能な値-READ_ONLY , READ_READ_WRITE , NONSTRICT_READ_WRITE、デフォルト値はREAD_ONLY
  • region:特定の領域名
  • @ChangeTrackingPolicy
    ChangeTrackingPolity(中国語名真迂回口:追跡ポリシーの変更)では、doctrine 2ワークユニットがFlush中にエンティティ属性の変化を検出すべきであることを設定することができる.デフォルトの各エンティティは、flushの前に作業ユニットがすべてのエンティティ属性を結合するスナップショットを行うことを意味する遅延メカニズムによってチェックされる.これは箱の外で働いていますが、ChangeTrackingPolicyを変えることでflushのパフォーマンスを強化したいかもしれません.
    詳細なChangeTracking Policy:details on all the available change tracking policiesについてのリンクがあります
    サンプルコード:
    <?php
    /**
     * @Entity
     * @ChangeTrackingPolicy("DEFERRED_IMPLICIT")
     * @ChangeTrackingPolicy("DEFERRED_EXPLICIT")
     * @ChangeTrackingPolicy("NOTIFY")
     */
    class User {}

    @DiscriminatorColumn
    この注記は、継承されたトップクラスのクラスに対して必須であり、クラス名を保存するフィールドの詳細を設定します.このクラスはインスタンス化されたエンティティです.
    @DiscriminatorColumn必須属性:
  • name:認証フィールド名