b.l0g.jp     About     Archive     Feed

vjCommentPluginで色々はまる

symfonyでニュースの記事などにコメント欄を付けるプラグインとして、vjCommentPluginというのがある。これの設定でちょっとはまったので、メモ。

インストールや設定はReadmeに書いてある通りで、簡単。ログインしないとコメントできないようにするため、sfGuardPluginと連携させる機能が追加されているのだが、これが癖者。この機能を使うときには、app.ymlに以下の表記を追記する。

all:

vjCommentPlugin:

guardbind: true

restricted: true

Readmeには、frontend/config/app.ymlを編集しろと書いてあるのだが、これだとコメントを保存するテーブルの中身が、ログインしないとコメントできないように書き換わってくれない。plugin/vjCommentPlugin/config/app.ymlを上の通り編集する必要がある。

また、この状態で symfony doctrine:build すると、以下のエラーが出る。

SQLSTATE[HY000]: General error: 1005 Can’t create table ‘pjtransrate.#sql-15f0_b9’ (errno: 150). Failing Query: “ALTER TABLE comment ADD CONSTRAINT comment_user_id_sf_guard_user_id FOREIGN KEY (user_id) REFERENCES sf_guard_user(id)”. Failing Query: ALTER TABLE comment ADD CONSTRAINT comment_user_id_sf_guard_user_id FOREIGN KEY (user_id) REFERENCES sf_guard_user(id)

これは、sfGuardUserテーブルでは id (ユーザのID)を integer で定義しているのに、commentテーブル(コメントを保存するテーブル)の user_id は integer(4) で定義されており、その間にrelationを張ろうとしているためエラーになっているようだ。

参考 : http://d.hatena.ne.jp/zankey/20070411/mysql

plugins/vjCommentPlugin/config/doctrine/schema.yml の comment テーブルの user_id の type を integer に変更して、再度 doctrine:build するとうまくいく。


海外の役立つブログ記事などを人力で翻訳して公開するYakstというプロジェクトをやっています。よろしければそちらもどうぞ!