IT's ABC

システム開発、Webアプリ開発の株式会社テラディアの技術ブログです。

RSS Feeds

  • Home
  • サイト情報
  • サイトマップ
  • お問い合わせ

  Home

symfonyのdoctrine:migrate処理のプレ・ポスト処理では、dqlは使用しない

5月 30th

Posted by admin in symfony

コメント無し

デプロイ先のサイト数が少しずつ増えて行くようなシステムの場合、symfonyのdoctrine:migrate処理のプレ・ポスト処理では、dqlは使用しない方が良いです。

例えば、SiteConfHonbuというモデルに、image_enabledという項目を追加し、その値をtrueに設定する場合、通常は次のようにpostUpはdqlを使用して記述します。(デフォルト値を1にすればpostUpは不要ですが、あくまで例です。)

public function up()
{
  $this->addColumn('site_conf_honbu','image_enabled', 'boolean', array('notnull' => true, 'default' => 0) );
}
public function postUp()
{
  Doctrine::getTable('SiteConfHonbu')->createQuery('c')
  ->update()
  ->set('c.image_enabled', true)
  execute();
}

もちろん、これは、この時点では、何の問題もなく動作します。

ところが、この後、バージョンアップによってimage_enabledの名前がtop_image_enabledに変更になった場合はどうなるでしょうか。

新しいサイトにデプロイする場合を考えてみてください。

この時、モデルにはimage_enabledという項目は既に無くなっています。その状態で、上記のdoctrine:migrate処理を行うと、エラーが発生してしまいますね。

postUpは、以下のようにsqlで記述してやれば、OKです。

public function postUp()
{
  //将来的にSiteConfHonbuモデルは変更になる可能性がある為、dqlは使用しない。
  $conn=Doctrine_Manager::connection();
  $sql='UPDATE site_conf_honbu set image_enabled=1';
  $conn->exec($sql,array());
}

 

*配置先が1サイトなら、特にこのような考慮は不要です。

doctrine, migrate, symfony

フォームでのファイルの最大アップロード数

5月 16th

Posted by admin in PHP

コメント無し

PHPのバージョン5.2.12から、一つのフォームで送信できるファイルの数がデフォルトで20個に制限されるようになりました。(実際にアップロードするファイル数ではなく、<input type="file" />の数の制限です。)

この制限数は、php.iniに設定できます。
例)
max_file_uploads = 100

開発環境では、現象が出なかったのですが、さくらのレンタルサーバーで、本現象が出て、なかなか原因がわかりませんでした。

知っていれば何でもない事なんですが、、、

PHP, フォーム
  • ようこそ!

    このサイトでは、日々のソフトウェア開発業務を通じて得た、ちょっとしたノーハウ等、開発に役立つ技術情報を発信しています。

    なお、Solaris、Sun関係の技術情報については、「Sun’s ABC」に載せていますので、そちらをご覧ください。

  • カテゴリー

    • Web (2)
      • PHP (2)
        • symfony (1)
  • 最近の投稿

    • symfonyのdoctrine:migrate処理のプレ・ポスト処理では、dqlは使用しない
    • フォームでのファイルの最大アップロード数
  • 関連サイト

    • Sun's ABC
  • タグ

    doctrine migrate PHP symfony フォーム
  • スポンサードリンク


Mystique theme by digitalnature | Powered by WordPress
RSS Feeds XHTML 1.1 Top
Copyright © 2004-2010 Terradia ,Inc. All rights reserved.