本日は雑多なテーマでお送りいたします。以下参照CakePHP3のハマリどころ:孫associationを指定する記法はメソッドによって異なる継承Model同士のアソシエーション継承されたModel同士を繋ぐ場合、定義を継承Modelに記述する。ExtCccsにもExtAaasと関係を持つように定義する。$this->entityClass(‘App\Model\Entity\ExtAaas’);の部分で、この継承Modelから成るEntityも継承したものを使うことを宣言している。Controller側で継承Model同士を繋ぐためには以下のように記述する。実行時、id以外で関係を持つものは自動で定義されないっぽいです。従って別途定義してやる必要がある。拡張ModelとEntityを作成すること。エンティティーEntityには仮想のフィールド(アクセサー)を定義することができる。これにより、対象Entityの仮想フィールドを参照した時、処理が行われ値が返される。}}対象Entityのアクセサーは以下のようにして参照する。$aaa->get('hello_world');適当な加工・計算を行なった後値を返却することも可能。子孫に条件付けをしつつModelを繋ぐ子、孫、曾孫などとアソシエーションを持ち、それらを引っ張るときかつ子孫に条件付けをしてレコードを引き出したい時はcontain()にクロージャを渡して絞り込みを行なったり、同時にさらに深い関係を取り出す(非推奨:できれば避けたい)。->contain(['Ddds']);}]]);これは、Aaasが子にBbbss、孫にCccsを持ち、かつ、Cccsのステータスが’消込完了’かつ指定の期間のもので、適合するCccsと関連があるDddsを引っ張ってくる。Dddsは、Aaasから見れば曾孫の関係に当たる。対し条件を設定する例えば、以下のようなクエリがある。HogesはFugasとhasManyの関係にある。$customers->contain(['Fugas'])この時、Fugasのカラムが持つ値によって絞り込みを行いたいとする。1]);これはDBエラーにより失敗する。参考記事にも書いてある通り、複数のSQLに分割されるらしいので失敗する。複数のテーブルに跨ったキーワード検索をループで行いたい場合にこれに困らされる。多数の子や孫を持ったqueryに対してwhere検索をかけようとした時、対象のテーブルや途中点のテーブルが基準テーブルに対して多の関係を持つ時、検索に失敗するということ。いう場合はcontain時にクロージャを渡してあげて絞り込みを行わないといけない。整数型を持つカラムに曖昧検索(LIKE句)は使えない以下のような処理があったとする。]);この時、対象カラムが文字列型であれば検索は成功するが整数型だと失敗する。対象カラムの型に気をつけて厳格な検索と曖昧検索を使い分けないといけない。テーブルのカラムが持つ型は以下で取ってこられるので一応分岐を作れる。pachicourse労働者階級1年目になりました。