CakePHP4であるモデルをcontain()で追加したら、下記のエラーになりました
Cannot convert value of type array to string
原因
テーブルに複合PK使っていました。
その場合、接続元のテーブルをどのカラムでbindするかも指定する必要があります。
こんな感じ
$his->hasMany('モデル名')
->setForeignKey('接続先テーブルのカラムID')
->setBindingKey('自分のモデルのカラム(idとか)'); //<- Required!
Cake4あたりから使えるようになったのは知っていましたが、特に使う用事はなかったので使っていませんでした。
普段(PKが1つのオーソドックスなテーブル)はPKが自動的に渡されるので特に書く必要はないのです。
bindするカラムは1つじゃないとダメなので、上記のエラーメッセージの個所で、配列のPKを渡されてしまうため、”型が違う”というエラーになってしまっていました。
これエラーメッセージが不親切すぎるよー。
これ調べても全くヒットしなかった。
英語でもなかったので、日本語を解せない人向けに英語でも一言書いておく。
When using a composite primary key, specify the key to bind with the setBindingKey() method!