我在$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/