Cakephp PHP プログラミング

【Cakephp4】Error SQLSTATE[23000]: Integrity constraint violation

下記、エラーに遭遇しました。

 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();

 

-Cakephp, PHP, プログラミング
-