CakePHP
CakePHP2で、CASEやCONCATなどを使ってテーブルに存在しないフィールド名でソートを行う場合、例えば下記のようにすると思います。 ['CASE WHEN User.age >= 20 then 1 else 0 END AS adult'], 'order' => ['adult DESC'] ]; find('all', $params); 通常のf…
CakePHP3を触り始めています。Cake3からfind()の結果がオブジェクトになりました。 Cake2までは配列だったのでpr関数で見ても問題なかったのですが、オブジェクトになるとprは辛くなります。CakePHP3からはdebug関数を使うと下記のようにリレーション先のデ…
CakePHPアドベントカレンダー2014の2日目の記事です。12/1に @K1LoWさんが突然アドベントを始めたので乗り遅れないように2日目を担当します。まだアドベントカレンダーは空いているので皆様も是非。そうそう、12/10にCakePHP2実践入門が電子書籍として発売さ…
CakePHP2からはPDOを使ってDBアクセスするようになりました。PDO(mysql)では、デフォルト設定でデータをfetchするとint型のカラムでもstring型として結果が返ってきます。CakePHPもこの影響を受けており、jsonデータなどに変換する際や、型を厳密に扱いたい…
あるプロジェクトでCakePHP1.2を使っていたのですが、そろそろサポート期間も終わりそうな気がしたのでCakePHP2.3の最新版にアップデートしました。 サイトは月に数百万PVぐらいの規模で、DBテーブル数は80ぐらい、それに加えてViewテーブルやストアドプロシ…
CakePHP1.2, 1.3, 2.xのPaginatorコンポーネントに脆弱性があり、最悪はSQLインジェクションが起こる可能性があるとのこと。 http://bakery.cakephp.org/articles/markstory/2013/04/28/security_release_-_cakephp_1_2_12_1_3_16_2_2_8_and_2_3_4 早急にア…
株式会社うるるで開催された、第1回CakePHP勉強会で発表してきました。 今回のお題は、「エンジニアとデザイナーの協業」でした。 デザイナー向けというのは、実は3回目ぐらいなので何を話そうかなと悩んでました。悩んだ末に、プログラマがどこまでデザイ…
正確には数ヶ月前からグループは出来てたんだけど、野良っぽい感じだった。 今は、CakePHPコアチームの人も参加してるし、名前もCakePHP Japanというグループ名になり、正式っぽくなった感じ。https://www.facebook.com/groups/304490963004377/日本のフォー…
CakePHP1.3からコアデベロッパーになったMarkStoryさんのインタビュー動画が公開されてます。http://twit.tv/show/floss-weekly/244動画はダウンロードできます。 また、音声のみでもダウンロードできるので、それをiPhoneに入れて聴いてました。彼の人柄が…
Cake1.2からCake2に乗せ換えしていてはまった話。 エラーログに下記のようなメッセージが出てうまく表示できない場合、コントローラのresponseオブジェクトが存在しないのが原因。$this->response->body()をCakeのコアコードで呼び出すのでその時にresuponse…
今年もCakePHP Adventカレンダー開催! http://www.adventar.org/calendars/40ハッシュタグは #cakeadvent2012 ですネタは何でも良いので、まずは登録して正座しながら担当日を迎えましょう!
まだまだCakePHP3.0のリリースには時間がかかると思いますが(たぶんあと1年ぐらい)、だんだんと3.0の形が見えてきました。CakePHP3からはPHP5.4以上が必須になるようなので、ホスティング環境にかなり左右されそうです。さくらインターネットが今日ホステ…
技術評論社より、「CakePHP2 実践入門」が発売されました。 http://gihyo.jp/book/2012/978-4-7741-5324-72012/9/29に発売なのに、お前はなぜ今頃という感じではありますが、宣伝したいと思います。 いや、最初は在庫切れを心配してあまり宣伝しなかったんで…
9/1,2とイギリスのマンチェスターで CakeFest2012のカンファレンスが開催されました。今年は去年と同じ場所でした。 今年も発表しようかと思ってたけど、色々な要因で参加しないことにして、その代わり、ライブ配信チケットを2万円ぐらいで買って家で見てま…
CakePHP2.2になったので、1.3, 2.0, 2.1, 2.2で比較しました。 比較したコードは、postsテーブルをbakeしただけの単純なものです。 https://github.com/ichikaway/CakePHP-PerformanceCheckSample この画面のように、ページング処理が入ったindexアクション…
発表資料です CakePHP最新情報 PHPカンファレンス関西2012 View more presentations from ichikaway 聞く人がCake知らない人もいるしという前提で作ってしまって、概要が多くなってしまいました。会場にいるほぼ99%の人がCake触ったことあって、8割ぐらいの…
もう2.2の足音が聞こえてきてますね。 「CakePHP 2.1.2 & 2.2.0-beta released」 http://bakery.cakephp.org/articles/markstory/2012/04/30/cakephp_2_1_2_2_2_0-beta_releasedCakePHP2.2では、2.0, 2.1とAPI互換のためそのままスムーズに移行できそうです…
CakePHPのシェルでHtmlヘルパを使ってHtmlHelper::url()を呼び出して、URLを取得する方法です。 CakePHP1.3をベースに書いています(CakePHP2の場合はApp::uses()を使うなどすればいけると思います)。 H…
CakePHP勉強会 2012春 @東京 〜ヤザマキ春のCake祭り〜 主催者&メインセッションの発表者だったのに、インフルエンザで欠席しました。 当日は@mon_satさんと@hiromi2424さんが私の発表資料をつかって即興プレゼンしてくれました。ありがとうございました!発…
Cake1用に作っていたXformヘルパーをCake2.0対応しました。(CakePHP2.1.1でも問題なく動きました) https://github.com/ichikaway/xformHelper/tree/2.0※現在、PHP5.2ではエラーがでますので、PHP5.3以上が動作条件になります(2012/4/18) Xformヘルパーは、…
いくつかのエレメントファイルがview/elements/foo/以下にあって、それをDBで更新することになりました。 ctpの内容をDBの1フィールドに入れて、表示は $this->element(foo/bar)の代わりに DBから取ってきたデータをecho($foo['Model']['bar']);すれば良いか…
CakePHPのプラグインでよく使いそうなものをまとめたCakeplusがCakePHP2に対応しました。 @k1LoWさんが全ての修正をしてくれたのでマージしただけ。ありがとうございます!2.0ブランチをご利用ください。 https://github.com/ichikaway/cakeplus/tree/2.0も…
CakePHP1系では、 Model->query('select * from posts where id=?', array('hoge'));みたいにして擬似バインドできましたが、CakePHP2からは下記の方法でやるとPrepared StatementでSQLを発行してくれます。 // in controller $result = $this->Post->getDat…
CakePHP1のセキュリティコンポーネントは、CSRF対策と、フォーム改竄対策がセットであるため、例えばjavascriptで動的にフォームなどを追加するとチェックに引っかかります。CakePHP2からは、CSRF対策とフォーム改竄対策がそれぞれオプションでOFFにできます…
app/Config/bootstrap.phpで下記のようにすると読み込めます。 CakePlugin::loadAll(array( 'FooPlugin' => array('bootstrap' => true, 'routes' => true), ));詳細は下記。 http://book.cakephp.org/2.0/en/plugins.html
CakePHP1では、ControllerやModel以下のphpファイルを階層化するために、その中にフォルダを作って入れても動くのですが、CakePHP2からは自動探索しなくなりました。 例えば、下記のように複数フォルダに分けてファイル管理する場合、 app/Contoroller/Admin…
CakePHP2.0.1がリリースされましたね リリースノート リリースノート(日本語訳)今回の変更で、HTTPのレスポンスヘッダにcontent-lengthをセットするようになったのですが、そこにマルチバイト関係の不具合があって日本語のコンテンツだとうまく表示できない…
今年もPHPMatsuriのスタッフとして参加してきました。 チケット販売、ホテルの部屋の手配など、イベント前にやるタスクが盛りだくさんで忙しすぎて、いつも開催前に「絶対来年はやらんぞ」と思ってしまうんだけど、PHPMatsuriが始まると180度転換してしまう…
10/22(土)発売のWeb+DB vol.65にCakePHPの記事を書きました。みなさんじゃんじゃん買ってください!内容は、CakePHP1.3でプラグインを使って開発を楽にするところをメインにしました。 @hiromi2424さんのTransitionComponent, 私のxFormHelper, バリデーシ…
最近関わってる http://tipshare.info というサイトで簡単なTipsを書いてます。 皆さんも是非使ってみてください。この週末に [twitter:@monsat]さんがtipshareの記事をブログに貼り付けられる機能を作ってくれたので、gitのコミットを後から分割する方法を…