データベースアプリケーションを構築する上で多対多テーブルの扱いは面倒です。
例えば、ブックッマークをタグで分類するようなシステムの場合、BookmarkとTagは多対多(Many-to-Many)の関係にあります。RDBでは例えば下のように中間テーブルTaggedを作って以下のようにします。
Bookmark ----<> Tagged <>---- Tag
このような構造になるため、本来TagとBookmarkの関係間にTaggedが入る事により一段手間が増えます。Symfonyのソースツリーを見ていたらこの煩雑な処理をやってくれるsfPropelManyToManyというライブラリがありましたので紹介します。
この投稿の続きを読む »多対多テーブルを簡単に扱う
ウェブアプリケーションを作る時、Apacheの設定が煩わしくなる事があります。
以前バージョン0.6.xのSymfonyでは
symfony server
というのが用意されていてsymfonyコマンドからテスト用のウェブサーバを手軽に立てる事ができましたが何らかの理由により廃止されてしまったようです。そこでコマンド一発でlocalhostの任意のポートに手軽に立てられるサーバ環境を作ってみました。
この投稿の続きを読む »lighttpdを開発用に使う
私のようにデータベース設計をテキストエディタでやる人にとってschemaの記述がYAMLで書けるようになったのは嬉しい限りですが、単純に書き方が替わっただけではありません。schema.ymlを使うといろいろ楽できます。もちろん従来通りschema.xmlも利用できます。今日はYAMLを使うことでどれくらい楽にデータベースの設計ができるかを試してみます。
この投稿の続きを読む »schema.ymlがどこまで楽させてくれるか
以前データベース環境をコマンド一発で切り替えるのエントリで紹介したconfigureタスクにういて、config/config.phpも修正対象に含めるべきじゃないか?とコメントを頂いたのでやってみました。
最初はpropel.iniとかと同じようにキーワード置換用のテンプレートを用意するだけかと思っていましたが、話はそんなに簡単ではありませんでした。
この投稿の続きを読む »configureでconfig.phpも切り替える
symfonyのプラグインインストール方法がたくさんあり毎回説明に困っているので一回ここら辺でまとめておきたいと思います。
どのコマンドを利用しても結論はpluginsディレクトリ以下にプラグインのパッケージを展開するだけです。お好みでどうぞ。
この投稿の続きを読む »プラグインのインストール方法のまとめ
私はウェブプログラミングの未経験者研修を担当することがあります。未経験者研修での最初の関門は画像ファイルなどファイルをサーバに送るフォームの作成です。ファイルのアップロードは複雑でそれまでの研修を問題なくこなしてきた人もここで必ず壁にぶつかります。未経験者でなくともファイルのアップロードは面倒と感じる人は多いのではないでしょうか?今日はファイルのアップロードを簡単に行う事ができるプラグインsfPropelFileStorageを紹介します。sfPropelFileStorageはデータベースにファイルを格納します。
この投稿の続きを読む »アップロードしたファイルをデータベースへ
複数人で開発している時、様々なデータベースを切り替える為に毎回propel.iniとdatabases.ymlを書き換えていませんか?Subversionでファイルを共有していて、プロジェクトメンバーの誰かがdatabases.ymlをcommitしてしまって喧嘩になった事はありませんか?このような事にならないよう私の会社では以下のようなconfigureタスクを利用して環境設定をできるようにしています。
今日は小ネタですがこのconfigureタスクをご紹介します。
注意:ブログエンジンのせいで–(ハイフン2つ)が一つに表記されてしまっています。回避方法が
判りませんのでコードをコピペする人は注意してください。
この投稿の続きを読む »データベース環境をコマンド一発で切り替える
第1回と第2回とテスティングフレームワークの最低限あるべき部分を紹介しましたがあまりにも基本的すぎて少々退屈でした。本日は少し楽しいかもしれません。covarage(カバレッジ、網羅率)のお話です。
この投稿の続きを読む »テストは十分? – lime without symfony part 3
前回第1回はlime_testを使った簡単なテストの実験をしました。今回第二回目はlime_testを複数の実行する基本枠組みlime_harnessクラスを試してみます。
この投稿の続きを読む »複数のテストファイルをまとめてテスト – lime without symfony part 2