这是我的模特
$AVMatchCriteria = device::where([$AVMatch])->get();
我通过使用foreach循环来创建变量$ AVMatch来遍历表中的条目,下面是我将其回显的样子。
["category", "=", "Server"],["siteid", "!=", "145228"],["udf8", "=", "asd"]
运行代码时,出现以下错误:
但是,如果我只是将字符串复制为纯文本格式,并将其放入模型中,如下所示,则效果很好。我不确定为什么它不起作用,但是以某种方式在我的查询中添加了0 =并且我猜这就是问题所在。
$AVMatchCriteria = device::where([["category", "=", "Server"],["siteid", "!=", "145228"],["udf8", "=", "asd"]])->get();
任何建议都会很棒:D
在这里,我是如何创建可变的$ AVMatch的,我知道它有点后退,但是我在尝试修复它:
$AVMatch = '';
$count = 0;
foreach($AVMatchCriteria as $AV){
$count++;
if($count != $AVMatchCriteriaCount){$extra = ',[';}else{$extra = '';}
$AVMatch = $AVMatch.'"'.$AV->case.'", "'.$AV->operator.'", "'.$AV->filter.'"]'.$extra;
}
$AVMatch = '['.$AVMatch;
答案 0 :(得分:4)
echo可以输出一个或多个字符串,而不是数组。
当您回显数组时,应该会发生类似Array to string conversion
的错误。
但是在这里,在呼应变量$ AVMatch之后,您得到了结果
["category", "=", "Server"],["siteid", "!=", "145228"],["udf8", "=", "asd"]
这意味着它不是数组,而是字符串。
您必须传递类似
的数组
[["category", "=", "Server"],["siteid", "!=", "145228"],["udf8", "=", "asd"]]
进入where子句。
但是您传递的字符串看起来像
'["category", "=", "Server"],["siteid", "!=", "145228"],["udf8", "=", "as
d"]'
希望你能理解。
答案 1 :(得分:1)
因为您将包含数组和数组的数组传递到where
中。
修复:
$AVMatchCriteria = device::where($AVMatch)->get();
答案 2 :(得分:0)
在得知需要创建一个数组而不是一个字符串之后,下面的代码对其进行了修复。
$AVMatch = array();
foreach($AVMatchCriteria as $AV){
$AVMatch[] = array($AV->case, $AV->operator, $AV->filter);
}