Laravel 多重where子句
我尝试用两个where子句进行查询,但得到了错误的响应,不知道为什么Laravel 多重where子句,laravel,eloquent,laravel-7,Laravel,Eloquent,Laravel 7,我尝试用两个where子句进行查询,但得到了错误的响应,不知道为什么 $history = AnswerHistory::where('question_id', '=', $id) ->where(function ($query) { $query->where('answer_type', '!=', "skipped"); }) ->get(); 对于数据库中的特定$id,我有5行,其中4行的答案为“跳过”,但
$history = AnswerHistory::where('question_id', '=', $id)
->where(function ($query) {
$query->where('answer_type', '!=', "skipped");
})
->get();
对于数据库中的特定$id,我有5行,其中4行的答案为“跳过”,但5-1为空
如果我删除第二个包含跳过答案的5个项目,则我的响应在该代码中为空
想要的响应是1行,其中答案类型!='跳过”
另外,我也试着从我的朋友那里得到答案
您可以像这样更改多个where条件的查询
$history = AnswerHistory::where([['question_id', '=', $id],['answer_type','<>','skipped']])
->get()
->toArray();
并替换!=与
我希望这会有所帮助您可以更改查询中的多个where条件,如下所示
$history = AnswerHistory::where([['question_id', '=', $id],['answer_type','<>','skipped']])
->get()
->toArray();
并替换!=与
我希望这会有帮助问题是,空的varchar是空的,而不是有值的varchar。因此不能用=或!='检查它字符串'。因此,您必须检查答案类型是否为!=跳过或为空
$history = AnswerHistory::where('question_id', '=', $id)
->where(function ($query) {
$query->where('answer_type', '!=', "skipped")
->orWhereNull('answer_type');
})
->get();
问题是,为null的varchar是null,而不是具有值的varchar。因此不能用=或!='检查它字符串'。因此,您必须检查答案类型是否为!=跳过或为空
$history = AnswerHistory::where('question_id', '=', $id)
->where(function ($query) {
$query->where('answer_type', '!=', "skipped")
->orWhereNull('answer_type');
})
->get();
@Beusebiu你自己说过你有5行,其中4行跳过了,第5行为空,所以在这种情况下,答案是正确的,我上传了一个img。以ID146为例。在我的回答中,我只需要那些没有被“跳过”的,即使是空的,使用这段代码,我得到null..@Beusebiu查询是正确的,但请确保$id变量的值正确,并在没有任何条件的情况下尝试查询,以检查模型是否正常工作not@Beusebiu你自己说过你有5行,其中4行被跳过,第5行为空,所以在这种情况下,答案是正确的上传一个img。以ID146为例。在我的回答中,我只需要那些没有被“跳过”的,即使是空的,用这段代码我得到空的。@Beusebiu查询是正确的,但请确保$id变量的值正确,并在没有任何条件的情况下尝试查询,以检查您的模型是否正常工作。我现在确实尝试了这一点,但我不知道为什么,直到现在,谢谢你!null不是字符串,因此不能使用=或!=进行检查在sqlI中,我现在确实尝试过这个方法,并且很有效,但我不知道为什么,直到现在,谢谢!null不是字符串,因此不能使用=或!=进行检查在sql中