下記、エラーに遭遇しました。
error
Error SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'member_id' in where clause is ambiguous
たとえば、下記のようなクエリがあったとします。
$this->Users->find() ->where(['member_id' => $member_id]) ->contain(['Staffs']) ->firstOrFail();
上記の場合、usersテーブルとstaffs テーブルに同じ member_idカラムが存在した場合に上記のエラーが発生します。
要はcontain先のテーブルも同じカラムが存在しており、where句の指定が曖昧になってしまっているということなので、「テーブル名.カラム名」というように、テーブル名を含む指定をするとうまくいきます。
// 同カラムが存在する場合「テーブル名.カラム名」で指定するべし $this->Users->find() ->where(['Users.member_id' => $member_id]) ->contain(['Staffs']) ->firstOrFail();