開発

開発

Cakeで行ロックを使う方法

CakePHP4系で行ロックを使う方法です。 あんまり指摘している記事がなかったので書いてみました。 具体的にはFOR UPDATEを使うのですが、どうやって呼ぶのか? 早速コードを見てみましょう //Tableクラス内などで use Ca...
CakePHP3.x

PHPのオブジェクトコピー

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

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

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

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

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

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

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

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

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

[CakePHP4.x]複数認証の実装方法

CakePHP4で認証システムを実装するのは若干以前より面倒になった感があります。 通常の実装方法に関しては、こちらで以前記事にしました。 一般的な実装方法についてわからない場合はcakebookの下記のページを参照すればよいかと思います。...
CakePHP3.x

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

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

[CakePHP4] Impossible to generate condition with empty list of values for field ってなに

Impossible to generate condition with empty list of values for field (モデル名.カラム名) こんなエラーが発生しましたが、コードの位置と発生した場所が違うのでいまいちわか...
開発

CakePHPのselectが面倒くさいんじゃ!

追記 その後、こんなことしなくてももっと簡単にできることが判明。こちらのリンクを参照してください。 忘備録としてこのページも残しておきます。 CakePHPのQueryビルダーでカラムをselectするのはちょっと面倒です。パフォーマンス的...
CakePHP4

helperなどでのURL指定方法の命名規則

CakePHP4でprefixを出したくてこんな感じに書いたらエラーになりました。 $this->Url('link-title', ); エラー内容 A route matching "array ( 'prefix' => 'api',...
CakePHP

==と===の罠

PHPは変数の型のチェックがいい加減なんで、仕様をよく理解していないと変なところでハマったりします。 CakePHPのコントローラー処理で、仮に <?php //コントローラーで public function view($user_id ...
PHP

[PHP]変数の中身を変数名に使いたい

変数の中身を変数名に使いたい時ってありますよね。 そういう時は可変変数というものを使います。 <?php $hoge = 'ほげだよ'; $fuga = 'hoge'; echo $$fuga; 実行例 ちなみにオブジェクトのプロパティーと...
CakePHP3.x

[CakePHP4]どこでもloadModel~

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

Queryビルダーに渡す無名関数でエラー

Queryビルダーに渡す無名関数で下記のようなエラーが出る場合。 Argument 1 passed to App\Controller\コントローラー名Controller::App\Controller\{closure}() must...
CakePHP4

ErrorControllerでログインユーザー情報が取得できない。

Authentication Component 2.xでErrorControllerでログインユーザー情報が取得できない問題に直面しました。 エラー画面でもユーザー情報を表示するためにログイン情報が欲しいのだけなのですが、 $this-...
CakePHP4

Entityを手動で書き換えたら保存されない場合は?

CakePHPのEntityの仕組みは、わかれば便利なんですが、知らないとちょっと困る場合が多いです。 patchEntity()を通してEntityを生成する場合は問題ないのですが、手動でEntityを書き換えた場合はいろいろハマるポイン...
CakePHP4

自動生成されたマイグレーションファイルがマイグレートできない。

自動生成されたマイグレーションファイルがマイグレートできませんでした。 エラーはこんな感じ PDOException: SQLSTATE: Syntax error or access violation: 1067 Invalid def...
CakePHP3.x

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

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

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

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