S eda1a14b50ee24bcab19b62f40858e76 Doctrine

PHPのORM。SymfonyのデフォルトORMになった

http://www.doctrine-project.org/documentat...

DQL

SQLをDoctrineで扱い易いように解釈したもの
Doctrin_QueryをtoStringするとこれが取得できる

・テーブル名の変換(クラス名→テーブル名)
・Joinの変換

from等で指定する場合テーブル名でなく対応するクラス名を入力する。

基本

$collection = Doctrine::getTable('User')->findAll(); // Doctrine_Collection

$collection = Doctrine::getTable('Diary')->createQuery()
  ->where('user_id = ?', 1)
  ->execute();

$record = $collection = Doctrine::getTable('Diary')->create(
  array('user_id' => 1, 'text' => 'text')); // Doctrine_Record
$record->save();


ハイドレーション

データ取得の方法。

// クラス定義して
class Doctrine_Hydrator_MyHydrator extends Doctrine_Hydrator_Abstract{ ... }
// 登録して
$manager->registerHydrator('my_hydrator', 'Doctrine_Hydrator_MyHydrator');
// fetchするときに指定
$q->execute(array(), 'my_hydrator');

フィールドがobjectの場合、saveでupdateされない

Doctrine_Recordの値が変更されてないとsave()してもupdateが発行されないようになってる。オブジェクトの中身を変更しても、変更したことにならない。
違うオブジェクトをnewしてコピーして対処した。もっとマシな方法ないのか。

もしかして

    他の人の「Doctrine」

    S eda1a14b50ee24bcab19b62f40858e76

    無所属ソフトウェアエンジニア

    (1722words)

    最新

      最新エントリ