1回目で触れましたがDoctrine2ではロジック処理をリポジトリクラスに集約しておくことができます。 1エンティティごとに1リポジトリを指定できるようになっているようです。 このリポジトリの中にDQLを閉じ込めてメソッドを定義しておくことで見通しのよいコードになります。 Symfony2のDoctrine2のドキュメントではDQLをアクションに書いている例なので「あれれ?」と思ったのですが、リポジトリを使えばちゃんと外だしできます。 では、少しばかりリポジトリの使い方を見てみます。 リポジトリの定義を行いひな形を作る Doctrine2のコマンドラインツールで既存のリポジトリからひな形を作成することができます。 以下の手順だけなので簡単です。 リポジトリの定義をエンティティに追加する エンティティの@Entityアノテーションにリポジトリのクラスを定義します。 repositor
Doctrine2はPHPのORMでPHP5.3.0以降に対応しているライブラリです。 Doctrine1がすでに存在していますが、様々な便利な機能が追加されさらに強力になっています。 ただし、色々できるということは覚えることも多いということで実際にDoctrine2を触ってみてその世界に触れてみたいと思います。 今回はインストールからORMを使ってデータベースと会話してみてその特徴を見てみたいと思います。 必須条件 Doctrine2は大きく3つのパッケージから構成されています。 Commonパッケージ 他のライブラリに依存していない再利用性のあるライブラリをまとめたパッケージ。コレクションのライブラリなどが含まれています。 DBALパッケージ PDOの薄い一番上のラッパーになります。薄いというのはDBの方言の違いを吸収することだけが目的。このパッケージはCommonパッケージを含ん
Doctrine2ではORMにPrimary Keyの値を自動生成する機能(Generator)が用意されています。今回2.3から"独自の値"を生成するGeneratorを定義・利用できるようになったので試してみました。 前置き 2.2まではBasic Mapping - Object Relational Mapper (ORM) - Doctrineにあるオプション AUTO SEQUENCE TABLE IDENTITY NONE が用意されており、これを変更することで「どのように値を生成するのか?」を変更することができます。 ただし、基本的にはsequenceなどを使った連番(数値)となりますので、 先頭ゼロ埋めのXX桁の文字列にしたい Entity内の何らかの値(特定のカラムの値とか)を使ってIDを生成したい といった場合は、別途値を生成してEntityにセットしてからpersi
masterとcategoryのように複数テーブルに情報が分かれている場合でもDoctrine2はよろしくMAPしてくれます。 ただ、ORMを使っているとSQLが直接見えない分、残念なSQLになってしまう事があるので挙動を調べたメモです。 Doctirne2のテーブル間の関係性において「1対1」「1対多」「多対多」の3つがあります。 今回は「1対多」で参照の場合のメモとなります。 1. テーブル構成 hoge1が1でhoge_typeが多の関係性で初期データやデータ定義は下記とします。 # テーブル定義 mysql> desc hoge1; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-----
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く