前編の続きです。 前編では下記の認証方法を説明しました。 Basic認証security.ymlで設定されたUser情報によるBasic認証 フォーム認証(User情報は固定)security.ymlで設定されたUser情報によるフォーム認証 フォーム認証(Doctrineと連携) データベースに設定されたUser情報によるフォーム認証 後編では下記を説明していこうと思います。 フォーム認証(DBで権限管理 ManyToOne) データベースに設定されているUserと権限情報によるフォーム認証(Userに対する権限は1つ) フォーム認証(DBで権限管理 ManyToMany) データベースに設定されているUserと権限情報によるフォーム認証(Userに対する権限は複数) では早速説明していきます。 フォーム認証(DBで権限管理 ManyToOne) 前編のほうで書いたフォーム認証(Do

データベースと Doctrine (“The Model”)¶ 現実を認めよう。どんなアプリケーションにとっても、データベースへの情報の永続化やデータベースからの情報の取得は、最もよく使われ、そしてチャレンジしがいのあるタスクです。そのタスクを簡単にこなすことができる強力なツールを提供する、というただ一点の目的だけに特化した Doctrine というライブラリを、幸運なことにも Symfony は統合しています。この章では、Doctrine の基本的なフィロソフィと、どれだけ簡単にデータベースを使うことができるか、という点を見ていきます。Note Doctrine 自体は、Symfony とは完全に独立していて、Symfony で使用することはオプションです。この章は、オブジェクトとリレーショナルデータベース(MySQL や PostgreSQL、MicrosoftSQL)をマップする
via. DoctrineのSoftDeleteが言うこと聞いてくれない。deleted_atが入ってるのに普通に表示される。 Masashi Sekine onTwitter: "DoctrineのSoftDeleteが言うこと聞いてくれない。deleted_atが入ってるのに普通に表示される。" 原因調べたらDoctrineの設定ですね。 config/ProjectConfiguration.class.phpの中に <?php class ProjectConfiguration extendssfProjectConfiguration { # このメソッドを追加 public function configureDoctrine(Doctrine_Manager $manager) { $manager->setAttribute(Doctrine_Core::ATTR_U
こんにちは。笹亀です。 symfonyはバージョン2かはSymfonyと頭文字が大文字表記となるとのことで、1.0のころに間違えてSymfonyと書いてツッコミを入れられたことを思い出しました。 さて本日はDoctrineのコネクションをMaster(更新 INSERT,UPDATE,DELETE)とSlave(選択 SELECT)で切り替えを行うProjectConfigurationとDoctrine_Connectionを継承したコネクションを操作するクラスを作成する方法について、ご紹介していきたいと思います。 ある程度の規模の開発をするときにどうしても必要になり、PropelにはあるのになぜDoctrineにはないのだと思い、いろいろソースとWebページを参考に調べながら作成しました。 config/ProjectConfiguration.class.php <?php requ

こんにちは。小川です。 よくあるオブジェクトリレーショナルマッパーは基本的に1つのテーブルに対して1つのモデルオブジェクトを定義します。このときにモデルオブジェクト間に親子関係を持たせたり、いくつかのモデルに対して抽象クラスを作りたいと思ったことはありませんか?Doctrineには継承に関する3つのパターンが用意されており、今回はそれをご紹介したいと思います。 まずは3つのパターンの概要を説明します。 ・Simple inheritance 単純に1つのテーブルに対して複数のモデルを作成する方法です。 どのレコードがどのモデルに対応するかは特に判断は行いません。 ・Concrete inheritance モデル1つひとつに対してテーブルを作成する方法です。 テーブルごと分けるため、カラムもテーブルごとに定義されます。 ・Column Aggregation inheritance 単純に

こんにちは。先日十数年ぶりに歯医者で泣かされた小川です。 先日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自体は以前から存在しており、内容自体はほぼ同じです。 ちなみに以前書

GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠
こんにちは。小川です。 ブログとは全く関係ないですが昨日引っ越しをしました。今まで埼玉に住んでいたのですが、都内に引っ越してきたので会社まで自転車で通えるようになりました。 入居申し込みから申請を急ピッチで行うことなったおかげでしばらくインターネットに繋げないので発狂しそうです。 入社2年目になりますが、今年度は仕事も生活も1人でこなせるよう、心機一転がんばっていきたいです。本日のブログはDoctrine 2.0について少しお話ししたいと思います。 Doctrineは現在1.1が最新となりますが、昨年の9月頃から(僕が確認したのがその頃だったのでもっと前からかもしれませんが)Subversionのtrunk上でDoctrine 2.0の開発が進められていました。 現在もまだbranchは作られていないですが、先日Doctrineのブログで2.0に関する記事が投稿されていました。 Glim

こんにちは、牧野です。 エアコンの入っている部屋にいることが多いせいか、最近夏バテ気味です。。。 さて、今日は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

上記のschema.ymlに対応するデータベースがある場合は、symfony doctrine-build-schemaでDoctrine用のスキーマを作成することができます。 Propelと比較すると以下のようになります。 <?php // 新規作成 // Propel $sample = new Sample; $sample->setName('hoge'); $sample->save(); // Doctrine $sample = new Sample; $sample->set('name', 'hoge'); $sample->save(); // プライマリーキーからの検索 // Propel $sample = SamplePeer::retrieveByPk($id); // Doctrine $sample = Doctrine::getTable('Sample'

# 2009/09/23 22:45 Fivestarさんからコメントで教えていただいたDoctrineのINSERTについてテスト1に追記しました。 # 2009/09/24 01:03 Fivestarさんからコメントで教えていただいたDoctrineのQueryCacheについてテスト3に追記しました。 symfonyとしては「これからはDoctrineがメイン」という方向性(symfony 1.3ではデフォルトのORMがDoctrineになっていますし)のようなので、いろいろな機能がDoctrineを基準に実装されていくことになるのだろうと思われますが、実際の案件に使っていくには、やはりパフォーマンスが気になるところです。 そもそもPropelでもPDOが採用された1.3が出るまではさんざん「遅い」と言われていて、それが「symfonyってもっさり」の原因になっていたのではないかと
1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く