我试图获取包含一系列例外情况的记录,这是我尝试的内容(请参阅下文)
$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'来自例外数组将返回(参见下文)
->whereNotIn('employee_id', ['MMMFLB003', 'guest_01', 'guest_02', 'guest_03'])
但我得到了这个错误(参见下文):
SQLSTATE [23000]:完整性约束违规:1052列 ' EMPLOYEE_ID' where子句是不明确的(SQL:select * from
employee
上的users
内部加入users
。employee_id
=employee
。employee_id
其中has_wishlist
= 0和employee_id
不在(MMMFLB003,guest_01,guest_02,guest_03)和employment_status
= ACTIVE)
任何想法,请帮忙吗?
答案 0 :(得分:1)
这是因为当您进行连接时,有两列具有相同的名称。
这就是为什么在您加入时employee_id
加上users.
和employee.
现在在您的whereNotIn
上,您还必须为它添加前缀,以便查询引擎知道您要引用的表列。因此,您只需在whereNotIn
子句中添加前缀:
->whereNotIn('employee.employee_id', ['MMMFLB003', 'guest_01', 'guest_02', 'guest_03'])
答案 1 :(得分:1)
->whereNotIn('employee.employee_id', ['MMMFLB003', 'guest_01', 'guest_02'])
使用连接时,如果您在两个字段中使用相同的名称,则会出现这些错误,因此请始终尝试按此方式获取它们
table_name.field_name