Laravel 多重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行的答案为“跳过”,但

我尝试用两个where子句进行查询,但得到了错误的响应,不知道为什么

$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中