我在$qids中有一个数组
[{"qid":1},{"qid":2},{"qid":3},{"qid":4}],现在,我想从数据库中获取与这些值匹配的行。我正在进行我的Laravel项目,我使用的where子句如下

$questions = Question::where(function($q) use ($qids){
    foreach($qids as $key => $value){
        $q->where($key, '=', $value);
    }
})->get();

这给了我一个错误
*SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause' (SQL: select * from `questions` where (`0` = {"qid":1} and `1` = {"qid":2} and `2` = {"qid":3} and `3` = {"qid":4}))*

如我所见,在错误线
where (`0` = {"qid":1} and `1` = {"qid":2} and `2` = {"qid":3} and `3` = {"qid":4})

它将0、1、2、3作为键,将整个{“qid”:1}作为值。
仅供参考,我正在从语句生成qid
$qids = Examquestion::select('qid')->where('examid', $examid)->get();

有什么方法可以让我只保存$qids中的值而不是成对的。
希望你能理解这个情景。蒂亚。

最佳答案

改用这个

$qids = Examquestion::where('examid', $examid)->lists('qid');

然后在中使用此数组
$questions = Question::whereIn('qid', $qids)->get();

你会得到你的结果的

关于mysql - 在Laravel的Where子句中将值作为数组传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34897167/

10-11 01:12