SQLSTATE[23000]:违反完整性约束:1052 where 子句中的列“值”不明确

1 php mysql laravel laravel-5

我收到此错误:


(3/3) QueryException
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'value' in where clause is ambiguous (SQL: select * from `users` where exists (select * from `permission_templates` inner join `permissions` on `permission_templates`.`value` = `permissions`.`value` where `users`.`id` = `permissions`.`user_id` and (`value` = TICKET_LIST or `value` = MASTER) and `permission_templates`.`deleted_at` is null) and `id` != 3 and `users`.`deleted_at` is null)
Run Code Online (Sandbox Code Playgroud)

如果我运行这个

        $collaborators = User::whereHas('permissions', function($query) {
            $query->where('value', 'TICKET_LIST')
                ->orWhere('value', 'MASTER');
        })->where('id', '!=', Auth::id())
            ->get();
Run Code Online (Sandbox Code Playgroud)

OMR*_*OMR 5

看起来您的用户表中有一个名称为“值”的列。

要解决此问题,您只需在其中的列名称之前添加表名称,

  $collaborators = User::whereHas('permissions', function($query) {
            $query->where('permissions.value', 'TICKET_LIST')
                ->orWhere('permissions.value', 'MASTER');
        })->where('id', '!=', Auth::id())
            ->get();
Run Code Online (Sandbox Code Playgroud)