我指定一个where子句:循环where子句?
$this->model = $model->where('published', '=', '1');
$this->model->get();
以上工作得很好,给人的查询日志:
select * from `products` where `published` = ?"
但我需要通过的循环,从阵列中的条款。
$arr = [['published', '=', '1'], ['id', '=', '1']];
foreach ($arr as $key => $value) {
$model = $model->where($value);
}
$model->get();
但与上述我找到一个列未找到。 'where子句'中的未知列'0'。
我哪里错了?
而且这一点,如果我只是通过整个阵列中,它的工作原理:
$model = $model->where($arr);
给予的查询日志:
"select * from `products` where (`published` = ? and `id` = ?)"
但是,where子句是在括号中...为什么?
我是否认为你想将数组中的任何值传递给你的'where'是正确的?例如,如果你有'[['col','=','val']],那么会导致'$ model-> where('col','=','val')'? – Jonathon
是的,那是正确的,我已经可以用$ model-> where($ arr);但是这个问题是它引起我的where子句的括号。它为什么这样做,括号是什么意思? – panthro
尝试删除赋值,使$'model = $ model-> where(...);'变成'$ model-> where(...);'。这是否做了什么?当你执行像'$ model-> where(function($ query){// Extra where子句});'' – Jonathon