使用 'whereNotIn' 的查询构建器抛出错误
query builder using 'whereNotIn' throws error
我正在尝试获取包含异常数组的记录,这是我尝试过的方法(请参阅下文)
$users_nowishlist = DB::table('employee')
->join('users', 'users.employee_id', '=', 'employee.employee_id')
->where('has_wishlist', '=', "0")
->whereNotIn('employee_id', ['MMMFLB003', 'guest_01', 'guest_02', 'guest_03'])
->where('employment_status', '=', 'ACTIVE')
->get();
所以在这一行中是我的记录过滤器,意味着只有不等于异常数组中任何 'employee_id' 的记录将是 return(请参阅下文)
->whereNotIn('employee_id', ['MMMFLB003', 'guest_01', 'guest_02', 'guest_03'])
但是我得到了这个错误(参考下文):
SQLSTATE[23000]: Integrity constraint violation: 1052 Column
'employee_id' in where clause is ambiguous (SQL: select * from
employee
inner join users
on users
.employee_id
=
employee
.employee_id
where has_wishlist
= 0 and employee_id
not in (MMMFLB003, guest_01, guest_02, guest_03) and
employment_status
= ACTIVE)
有什么想法,请帮忙?
发生这种情况是因为当您进行连接时,有两个同名的列。
这就是为什么在加入时要在 employee_id
前加上 users.
和 employee.
现在,在您的 whereNotIn
上,您还必须为其添加前缀,以便查询引擎知道您正试图引用哪个 table 列。因此,您只需在 whereNotIn
子句中添加前缀:
->whereNotIn('employee.employee_id', ['MMMFLB003', 'guest_01', 'guest_02', 'guest_03'])
->whereNotIn('employee.employee_id', ['MMMFLB003', 'guest_01', 'guest_02'])
使用 join 时,如果您在连接的表中有两个同名的字段,则这些错误是预料之中的,因此请始终尝试像这样获取它们
table_name.field_name
我正在尝试获取包含异常数组的记录,这是我尝试过的方法(请参阅下文)
$users_nowishlist = DB::table('employee')
->join('users', 'users.employee_id', '=', 'employee.employee_id')
->where('has_wishlist', '=', "0")
->whereNotIn('employee_id', ['MMMFLB003', 'guest_01', 'guest_02', 'guest_03'])
->where('employment_status', '=', 'ACTIVE')
->get();
所以在这一行中是我的记录过滤器,意味着只有不等于异常数组中任何 'employee_id' 的记录将是 return(请参阅下文)
->whereNotIn('employee_id', ['MMMFLB003', 'guest_01', 'guest_02', 'guest_03'])
但是我得到了这个错误(参考下文):
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'employee_id' in where clause is ambiguous (SQL: select * from
employee
inner joinusers
onusers
.employee_id
=employee
.employee_id
wherehas_wishlist
= 0 andemployee_id
not in (MMMFLB003, guest_01, guest_02, guest_03) andemployment_status
= ACTIVE)
有什么想法,请帮忙?
发生这种情况是因为当您进行连接时,有两个同名的列。
这就是为什么在加入时要在 employee_id
前加上 users.
和 employee.
现在,在您的 whereNotIn
上,您还必须为其添加前缀,以便查询引擎知道您正试图引用哪个 table 列。因此,您只需在 whereNotIn
子句中添加前缀:
->whereNotIn('employee.employee_id', ['MMMFLB003', 'guest_01', 'guest_02', 'guest_03'])
->whereNotIn('employee.employee_id', ['MMMFLB003', 'guest_01', 'guest_02'])
使用 join 时,如果您在连接的表中有两个同名的字段,则这些错误是预料之中的,因此请始终尝试像这样获取它们
table_name.field_name