CakePHP3.x

CakePHP3.xCakePHP3.x

CakePHP3.x関連の技術情報

CakePHP

[PHP]ゴミがレンダリングされる

CakeなりLaravelなりで、下手にコンソール出力するデバッグプリントを使って消し忘れるとめんどくさいことになります。フレームワークだと、いろんなファイルをを経由して呼ばれるので、消し忘れるとどこでやってるかわからなくなります。フレーム...
CakePHP3.x

[CakePHP]patchEntity()で渡したデータがNULLになる件

CakeでpatchEntity()で渡したカラムの中身がなぜかNULLになってしまう問題が発生。原因は、渡したデータの変数の型やフォーマットが、DBのカラムの型と一致していなかったり、変換できない場合、NULLになるというものでした。発生...
CakePHP

[CakePHP]IN句を使う場合はwhere()を使うな!whereInList()を使え

通常、IN句を使って指定のIDのレコード一覧を取ってくるには$this->Users->find('all')->whre();とすればよいのですが、$userListが空の場合エラーになってしまいます。従来は$userListの存在チェッ...
CakePHP3.x

[CakePHP3.x]buildRules()メソッドでもエラーメッセージが出せる

belogsToとかの存在チェックのバリデーションを書くと思いますが、実はbuildRules()のところでもできちゃいます。何もしないと、存在しないIDを保存しようとするとThisvaluedoesnotexistという感じで出てくると思...
CakePHP3.x

[CakePHP]phinxlogと現状のDBが合ってない時の最終手段

なんか知らんが、カラムがないって言われる・・・Error:SQLSTATE:Columnnotfound:1054Unknowncolumn'hogehoge_id'in'whereclause'確かにテーブルにはないんだけど、migrat...
CakePHP3.x

コントローラーから直接画像を出力させる

今回は、コントローラーから画像を出力させる方法をご紹介します。画像をファイル出力してリンクさせる方法もありますが、一時的な画像の場合は後処理が面倒です。そこで今回は直接レスポンスでバイナリを返すという方法をご紹介します。なお、テキストやCS...
CakePHP3.x

[CakePHP4]途中で追加したカラムが保存されない

Modelの設計を行っているときに、途中でカラムを追加するというようなことはよく発生すると思います。ですが、たまに追加したカラムがなぜか保存されないという問題が発生します。この問題は、だいたいはEntityの$_accessibleプロパテ...
CakePHP3.x

[CakePHP4]migration_diff しても差分が認識されない

テーブル定義を直接変更した後にmigration_diffコマンドを使うと差分を認識してMigrationファイルを自動生成してくれる便利な機能があります。./bin/cakebakemigration_diff(設定名)ですが、使い方を間...
CakePHP3.x

エラー画面のレイアウトを変更する

CakePHP4でレイアウト、つまり大枠の部分のデザインテンプレートは、デフォルトではtemplate/layout/default.phpが使われます。これは、レイアウトファイルといわれていますが、デフォルトのレイアウトファイルを変更する...
CakePHP3.x

[CakePHP4]Queryからの日付取得

CakePHP4でqueryからカラムの日付をstrtotime()で変換しようとしたら以下のようなエラーになります。strtotime()expectsparameter1tobestring,objectgiven以前のバージョンでは、...
CakePHP3.x

PHPのオブジェクトコピー

CakePHPのqueryビルダで、こんな感じで条件を変えて連続して結果を取得したいなぁ‥というとき。例えばこんな感じのことをしたいとすると$query=$this->find()->where(共通の複雑な条件);$a=$query->w...
CakePHP3.x

Viewにセットした値をコントローラーで取得する

Viewにセットした値をコントローラーで取得する方法です。古いバージョン(CakePHP2系)コントローラークラスにプロパティーがありますので、そこから取得が可能です。$varname=$this->viewVars;現行バージョン(Cak...
CakePHP3.x

CakePHP4で動的生成しながらファイルダウンロード

CakePHP4でのファイルのダウンロード方法を解説します。CakePHP3/4系での記事になります。通常の方法まずは、簡単なデータを一括で生成してからダウンロードさせる方法です。$body="あいうえお";$filename=rawurl...
CakePHP3.x

サーチプラグインでカラムを連結して検索したい

friendsofcake/searchを使っての検索は非常に楽なんですが、いろいろわからない点が多いんですよね。カラムを連結して検索する要件があたのですが、手間取ったので記事にしました。CakePHP2の場合CakePHP2の場合は非常に...
CakePHP3.x

count() メソッドは limit、 offset、 page 句を無視する?

CakePHP4で、データのエクスポートをするためにlimit()とpage()を組み合わせてcount()で残りの数を見ながら出力していたのだけど、なんか終了しない。むむむ?と思って調べてみたら。count()メソッドはlimit、off...
CakePHP3.x

CakePHP4のselectの一括カラム登録方法

以前、CakePHPのクエリビルダ―でselectでカラムを登録すると他が消えてしまって、全部登録しなおさなくちゃいけなくてめんどくさいという記事を書きました。でも、その後しらべたら、あんなことしなくても簡単にselectのカラムを一括登録...
CakePHP3.x

[CakePHP4]どこでもloadModel~

コントローラー以外でもModelを使いたい場合ってありますよね?え?使うなって。でもコンソールとかコンポーネントとかで使いたい場合あるでしょう?そんなときの方法です。環境CakePHP4(たぶんCakephp3も同じ)方法traitを使って...
CakePHP3.x

$this->request->is()が反応しない

CakePHP4で編集画面の作成を行っていたらなぜか$this->request->is()に反応してくれなくて一向にデータの更新処理に行かない。なんでだ…。と思ったら原因単なるケアレスミス。フォームにプライマリキーを書き忘れてました。これ...
CakePHP3.x

Authentication Component 2.xで手動でログイン状態にする方法

CakePHP4のログイン認証はAuthenticationComponent2.xに変わったのですが、以前と勝手が違うので戸惑うことが多いです。手動でログインする方法が分からなかったので調べてみました。バージョン情報CakePHP4.2A...
CakePHP

Windowsホスト&VirtualBoxの共有フォルダー内でcomposerやnpmが動かない

いろいろ試して、WindowsホストでVirtualBoxの共有フォルダー機能は使ってはいけないという結論になりました。なぜダメなのかと解決方法(代替案)を記事にしました。composerやnpmが動かないWindows環境でVirtual...