Doctrine は, PHPのORM (Object-relational mapping : オブジェクト指向言語におけるオブジェクトと、MySQLやPostgreSQLの様な、リレーショナルデータベースにおけるレコードとを対照させるもの) で、Symfonyで利用されている。
詳しくは、Databases and Doctrine ("The Model")を参照してください。
データベースの情報を設定
まず、データベースに接続するためには, app/config/parameters.ini でホストなどを指定する。- [parameters]
- database_driver="pdo_mysql"
- database_host="localhost"
- database_name="hoge"
- database_user="moge"
- database_password="piyo"
以下のコマンドを叩けば、app/config/parameters.ini の情報に基づいてデータベースを作成してくれる。
php app/console doctrine:database:create
Entity Class の作成
エンティティを、src/Acme/StoreBundle/Entity/ のような場所 (〇〇Bundle/Entity下) に作成する。(このクラス自体は、データを格納するだけ)まず、以下のコマンドを実行する。
php app/console doctrine:generate:entity --entity="AcmeStoreBundle:Product" --fields="name:string(255) price:float description:text"
すると、ORM情報をアノテーションとして設定されているエンティティクラスが作成される (以下)。
また、Getter と Setter も用意してくれます。
- // src/Acme/StoreBundle/Entity/Product.php
- namespace Acme\DemoBundle\Entity;
- use Doctrine\ORM\Mapping as ORM;
- /**
- * Acme\DemoBundle\Entity\Product
- *
- * @ORM\Table()
- * @ORM\Entity
- */
- class Product
- {
- /**
- * @var integer $id
- *
- * @ORM\Column(name="id", type="integer")
- * @ORM\Id
- * @ORM\GeneratedValue(strategy="AUTO")
- */
- private $id;
- /**
- * @var string $name
- *
- * @ORM\Column(name="name", type="string", length=255)
- */
- private $name;
- /**
- * @var float $price
- *
- * @ORM\Column(name="price", type="float")
- */
- private $price;
- /**
- * @var text $description
- *
- * @ORM\Column(name="description", type="text")
- */
- private $description;
- /**
- * Get id
- *
- * @return integer
- */
- public function getId()
- {
- return $this->id;
- }
- /**
- * Set name
- *
- * @param string $name
- */
- public function setName($name)
- {
- $this->name = $name;
- }
- /**
- * Get name
- *
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
- /**
- * Set price
- *
- * @param float $price
- */
- public function setPrice($price)
- {
- $this->price = $price;
- }
- /**
- * Get price
- *
- * @return float
- */
- public function getPrice()
- {
- return $this->price;
- }
- /**
- * Set description
- *
- * @param text $description
- */
- public function setDescription($description)
- {
- $this->description = $description;
- }
- /**
- * Get description
- *
- * @return text
- */
- public function getDescription()
- {
- return $this->description;
- }
- }
ORM情報をYAML等のコンフィグファイルで設定したい場合は、--format=yml のオプションを加えることで可能。(その場合のコンフィグファイルは、src/Acme/StoreBundle/Resources/config/doctrine/Product.orm.yml となる)
ちなみに、SQLのキーワードとなってる名前をフィールドにつけようとすると、エラーとなるらしい。その場合は、
- /** @Column(name="`number`", type="integer") */
- private $number;
テーブル/スキーマの作成
次の以下のコマンドを実行すれば、自動的にテーブル/スキーマの作成を行なってくれる。php app/console doctrine:schema:update --force
とりあえず、今回はココまでっ!!
0 コメント:
コメントを投稿