我有两个问题。一个返回interview
等于1的所有情况和另一个interview
等于2的情况。然后我添加两个。目前在我的数据库中我有两个案例,其中访谈是2,一个案例是访谈是1.我的两个陈述都有效。但是,当我因某种原因尝试将它们组合时,我得到4.不确定为什么。如何组合它们以获得正确的数字。
以下是两个加起来为3的语句
Scan::where('user_id', $client->id)->where('interview', '2')->count();
Scan::where('user_id', $client->id)->where('interview', '1')->count();
当我尝试组合然后使用和orwhere语句时,它返回4
Scan::where('user_id', $client->id)->where('interview', '2')->orwhere('interview', '1')->count();
我做错了什么以及如何解决。
答案 0 :(得分:3)
问题是AND
和OR
:
第一个使用user_id
和interview
严格返回结果,而第二个看起来像user_id
,和interview = 1
或{{1 }}
根据外观,这意味着,您将获得更多结果,因为查询与interview = 2
匹配更多记录而没有user_id
但是,你可以使用interview = 2
函数,即:
whereIn
它会返回Scan::where('user_id', $client->id)
->whereIn('interview', ['2', '1'])
->count();
值为2或1的结果。