レコード退避プラグイン作ってみました。
sfPropelRemainというプラグインを作ってみました。
update/delete時に自動的に過去のレコードを退避してくれるプラグインです。こないだのサンプルコードを使って作ったので、PropelBehaviorの作成例として見てくださいね!
この投稿の続きを読む »レコード退避プラグイン作ってみました。
sfPropelRemainというプラグインを作ってみました。
update/delete時に自動的に過去のレコードを退避してくれるプラグインです。こないだのサンプルコードを使って作ったので、PropelBehaviorの作成例として見てくださいね!
この投稿の続きを読む »レコード退避プラグイン作ってみました。
symfonyは標準的にpropelというO/Rマッパライブラリを使用しています。このpropelに対して独自の処理を付け加える機構がsfPropelBehaviorです。
この機構を使うことで、たとえば『saveしたときに自動的に更新者のIPアドレスを保存する』などといった透過的処理を、簡単に追加することができます。
本日記では、そのPropelBehaviorの使い方を説明します。実装の際に便利そうなテンプレートも用意しましたので、もしよければ使ってみてください。なお、本稿ではこのテンプレートを使用しています。
この投稿の続きを読む »PropelBehavior使ってますか?
本日、ディノの社内勉強会でsymfonyでタグ付きのシステムの作り方を話しました。 その勉強会の動画をポストします。
データベースアプリケーションを構築する上で多対多テーブルの扱いは面倒です。
例えば、ブックッマークをタグで分類するようなシステムの場合、BookmarkとTagは多対多(Many-to-Many)の関係にあります。RDBでは例えば下のように中間テーブルTaggedを作って以下のようにします。
Bookmark ----<> Tagged <>---- Tag
このような構造になるため、本来TagとBookmarkの関係間にTaggedが入る事により一段手間が増えます。Symfonyのソースツリーを見ていたらこの煩雑な処理をやってくれるsfPropelManyToManyというライブラリがありましたので紹介します。
私のようにデータベース設計をテキストエディタでやる人にとってschemaの記述がYAMLで書けるようになったのは嬉しい限りですが、単純に書き方が替わっただけではありません。schema.ymlを使うといろいろ楽できます。もちろん従来通りschema.xmlも利用できます。今日はYAMLを使うことでどれくらい楽にデータベースの設計ができるかを試してみます。
この投稿の続きを読む »schema.ymlがどこまで楽させてくれるか
PostgreSQLがバージョン8.1以降(パフォーマンス的に)だいぶ良くなって来ていると言うことで、最近再びPostgreSQLを使っているんですがちょっとはまったことがあるので紹介します。
symfony + PostgreSQLな環境にsfGuardPluginをインストールし、symfony-build-allを行うとかなりの量のCREATE文でエラーが出ます。エラー箇所を見ると
[propel-sql-exec] Could not execute update [Native Error: ERROR: syntax error at or near "(" at character 106] [User Info:
PostgreSQLではこのようにINTEGERにsize指定してあるとエラーになってしまいます。 ということで、ちょっとコードを追ってみました。
この投稿の続きを読む »symfony + Postgresqlでプチはまり