エンティティの基本的な記述を例を用いて説明します。以下の例では、User
エンティティを作成しています。
// src/Entity/User.php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
* @ORM\Table(name="users")
*/
class User
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $username;
/**
* @ORM\Column(type="string", length=255)
*/
private $email;
// GetterとSetterメソッドが省略されている
// コンストラクターなどのメソッドも追加することができる
}
この例では、User
エンティティが作成されています。以下に各要素の説明を示します。
namespace
namespace
キーワードは、このファイルがApp\Entity
の名前空間にあることを示しています。これにより、このクラスが他のクラスと競合しないようになります。
use
use
キーワードは、他のクラスやトレイトをインポートします。この例では、ORM
というエイリアスをDoctrine\ORM\Mapping
に割り当てています。
エンティティのクラス定義
User
クラスは、User
エンティティを表します。User
クラスはApp\Entity
名前空間内にあります。
@ORM\Entity()
@ORM\Entity()
アノテーションは、このクラスがDoctrineのエンティティであることを示します。
@ORM\Table(name="users")
@ORM\Table
アノテーションは、このエンティティが対応するデータベースのテーブルの名前を指定します。この場合、users
という名前のテーブルにマッピングされます。
プロパティ
エンティティのプロパティは、データベースの列にマッピングされます。例えば、$username
プロパティは、users
テーブル内のusername
列にマッピングされます。
@ORM\Id()
@ORM\Id()
アノテーションは、このプロパティがエンティティの主キーであることを示します。
@ORM\GeneratedValue()
@ORM\GeneratedValue()
アノテーションは、このプロパティが自動的に生成される主キーであることを示します。
@ORM\Column
@ORM\Column
アノテーションは、プロパティがデータベースの列にマッピングされることを示します。type
パラメータは、列のデータ型を指定します。
これは基本的なUser
エンティティの例です。これを使用して、Symfonyアプリケーションでユーザーのデータベースレコードを表現することができます。