16. Hibernate の HQL にインスパイア PDO PHP 5.2.3 以上 日本語のドキュメントあり http://www.doctrine-project.org/ 17. DQL D octrine Q uery L anguage 正確にはDoctrine用のSQL DQLを生成するためのインターフェイスが Doctrine_Query オブジェクト
こんにちは、小川です。 本日Doctrine2.0のAlphaバージョンがリリースされました。簡単なチュートリアルも公開されているので、本日は実際に動かしてみたいと思います。 今回のリリースについては以下の記事をご覧ください。 Doctrine - Doctrine 2 Preview Release 以前僕が書いた、「Doctrine2.0について」という記事をご覧になった方でDoctrine1.xをご存じの方はわかるかと思うのですが、Doctrine2.0は全くの別物です。 上記の記事にも書いてあるとおり、実に90%以上ものコードが書き直されています。とはいえ現在はAlphaバージョン。実装されているのはまだまだ最低限の機能でしかありません。CLIやビヘイビアといった機能が実装されるのはまだ先のことでしょう。 さて、本題に入っていきましょう。実際に動かすにあたって、PHP5.3が必要に
こんにちは。小川です。 よくあるオブジェクトリレーショナルマッパーは基本的に1つのテーブルに対して1つのモデルオブジェクトを定義します。このときにモデルオブジェクト間に親子関係を持たせたり、いくつかのモデルに対して抽象クラスを作りたいと思ったことはありませんか?Doctrineには継承に関する3つのパターンが用意されており、今回はそれをご紹介したいと思います。 まずは3つのパターンの概要を説明します。 ・Simple inheritance 単純に1つのテーブルに対して複数のモデルを作成する方法です。 どのレコードがどのモデルに対応するかは特に判断は行いません。 ・Concrete inheritance モデル1つひとつに対してテーブルを作成する方法です。 テーブルごと分けるため、カラムもテーブルごとに定義されます。 ・Column Aggregation inheritance 単純に
こんにちは、牧野です。 エアコンの入っている部屋にいることが多いせいか、最近夏バテ気味です。。。 さて、今日はDoctrineについてのTIPSです。symfonyとDoctrineの組み合わせで使う中で、役立ちそうなことをいくつか紹介します。 1.複数のデータベースに接続 config/databases.ymlとconfig/doctrine/schema.ymlを次のように書きます。 databases.yml all: main: class: sfDoctrineDatabase param: classname: DoctPDO dsn: mysql:dbname=shop_test;host=localhost username: root password: encoding: utf8 persistent: true pooling
こんにちは。小川です。 ブログとは全く関係ないですが昨日引っ越しをしました。今まで埼玉に住んでいたのですが、都内に引っ越してきたので会社まで自転車で通えるようになりました。 入居申し込みから申請を急ピッチで行うことなったおかげでしばらくインターネットに繋げないので発狂しそうです。 入社2年目になりますが、今年度は仕事も生活も1人でこなせるよう、心機一転がんばっていきたいです。 本日のブログはDoctrine 2.0について少しお話ししたいと思います。 Doctrineは現在1.1が最新となりますが、昨年の9月頃から(僕が確認したのがその頃だったのでもっと前からかもしれませんが)Subversionのtrunk上でDoctrine 2.0の開発が進められていました。 現在もまだbranchは作られていないですが、先日Doctrineのブログで2.0に関する記事が投稿されていました。 Glim
通常、Doctrineでレコードを取得すると、Doctrine_Collectionのインデックスには整数インデックスが使われます。 しかし、取得したレコード一覧を単にループで処理するのではなく、連想配列のように処理したい場合もあります。 このような場合、Doctrine_Collectionのインデックスに、取得するレコードの特定のフィールドを使うように設定できます。 この機能を「Key Mapping」と呼びます。 INDEXBYキーワード コレクション:キーのマッピング Key Mappingの基本1 INDEXBYキーワードによる指定 DQL内に直接指定できる「INDEXBY」というキーワードがあります。 これを使うのがもっとも簡単です。 <?php $user_list = Doctrine_Query::create()->from('User u INDEXBY u.hand
初めまして。社内にいるほとんどのプログラマーがpropelの中いきなりdoctrineを学んだピチピチ平成生まれ(20歳)、新卒のitaniです。 symfonyを学んだときに、こんな記事があったらいいなぁと思ったので書くことにしました。 というわけで、symfonyを触ってまだ間もない僕が、今回はdoctrineを使ってDBの基本操作を紹介します。 ※symfonyのversionは1.4を使用します。 DBの準備 まずはDBの準備をします。 symfonyを使ってDBを作るにはまずスキーマを作らなければいけません。 スキーマを作る方法は2つあります。 1、自分でschema.ymlを書く config/doctrine/schema.ymlにテーブルの構造をYAMLフォーマットで書きます。 //今回使うDBのschema.yml User: columns: name: { type:
こんにちは。先日十数年ぶりに歯医者で泣かされた小川です。 先日Doctrineのテンプレートというものについて使う機会があったので、今回はそれを紹介していきます。 Doctrineに関しては過去に森川さんが書いたブログをみていただければと思います。 ・symfony & Doctrine ・symfony & Doctrine その2 説明の前に、せっかくなので報告です。 The wait is over: symfony 1.1 released ついにsymfony 1.1が正式にリリースされました。今日は残念ながらsymfony 1.1のネタはありませんが、森川さんの記事があるのでぜひそちらをみてください。それでは紹介していきましょう。 さて、Doctrineにはデフォルトでいくつかテンプレートが存在しています。特にかかせないのがTimestampableテンプレートです。 Prop
こんにちは。小川です。 本日はDoctrineで論理削除を意識せずに扱う方法を紹介しようと思います。 結論から言うと、Doctrineが標準で用意しているSoftDeleteテンプレートをモデルに実装すれば自動的にクエリが発行する際に削除の判定を行ってくれるようになります。 テンプレートに関しては以前書いたブログがあるのでそちらを参考にしてください。 ただ上記の記事はDoctrine 0.11をベースに書いた記事なのですが、Doctrine 1.0からテンプレートの定義方法が少し変わったので先に少し説明します。 以前書いた記事では、config/doctrine/schema.ymlで のようにtemplatesという名前で指定していましたが、templatesではなく「actAs」で指定するようになりました。 actAs自体は以前から存在しており、内容自体はほぼ同じです。 ちなみに以前書
写真はドクペ。 Doctrineでfind使いたいんだけど論理削除があるからどうしてもできない! ってことでgoogle:doctrine 論理削除でググッてみた。 アシアルブログですごくいいエントリーが沢山ヒット。 Doctrineで論理削除を意識せずに扱う : アシアルブログ symfonyでDoctrineのテンプレートを実装する : アシアルブログ ただ少し古いのでアシアルブログのエントリを参考にDoctrineの公式サイトを直接見に行ったりして Doctrine 1.2.4、Symfony1.4.10で動作するところまで調査できた。 DoctrineはデフォルトでSoftDeleteというモデルビヘイビアというものを持っている。 以下参照 http://www.doctrine-project.org/documentation/manual/1_0/ja/behaviors h
小川です。WEB+DB PRESS Vol.46のプレゼントで応募した「はまちちゃんのセキュリティ講座の生イラスト&直筆サイン入り色紙」が当たってしまいました。感激です。ありがとうございます。 先月末に第2回symfony勉強会があり、そこでDoctrineについて簡単に発表を行ってきました。 そこでDoctrineのアクセサ(Getter/Setter)について色々と疑問を抱いてる方がいらっしゃったので、今日はそれについてまとめてみようと思います。 まず、DoctrineのGetterがどのようなものかを解説していきます。 基本的に僕はDoctrineを単体ではなくsymfonyとあわせて使っているので、sfDoctrinePluginを使っていることを前提として進めていきます。 またDoctrineは1.0系を想定しています。 Doctrineのプロパティには以下のようなアクセス方法が
ふつうにSQLでUPDATE文を書くときは、複数のレコードに対して変更が適用されますが、Doctrine_Recordクラスを使って変更をしようとすると、一つ一つレコードを取得して、save()メソッドを呼ぶということをしなければなりません。 これはリソースの無駄遣いなので、複数のレコードを一括して変更する場合は、Doctrine_Queryのupdate()メソッドを使います。 $q = Doctrine::getTable('SomeTable')->createQuery(); $q->update('SomeTable'); $q->set('field_name', 'new_field_value'); $q->where('field_name > ?', 'some_value'); $q->execute();
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く