Issei.M's Techlog

Web/iOS エンジニアの僕が技術関連のメモ等をつらつらと。主に Symfony について書いています。

[Doctrine][MySQL] アノテーションで unsigned を定義する

Doctrine2 のエンティティプロパティに unsigned を設定する方法が分かりづらかったのでメモ。

/**
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 * @ORM\Column(type="bigint", options={"unsigned"=true})
 */
protected $id;

こんな感じで Column::options プロパティを設定します。因みに SQL をダンプすると次のような結果になります。

CREATE TABLE users (id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, ...

また type と options に使える値は次のクラスに定義されています。(MySQLの場合)

Doctrine\DBAL\Schema\MySqlSchemaManager

※ Column::columnDefinition で決め打ちしてしまうと、外部キー周りでハマりやすいので極力避けた方がよさげです。