Laravel 5.8:尝试通过使用从数据库中提取的数据来建立模型

时间:2019-07-14 20:03:24

标签: php laravel-5 eloquent

这是我的模特

$AVMatchCriteria = device::where([$AVMatch])->get();

我通过使用foreach循环来创建变量$ AVMatch来遍历表中的条目,下面是我将其回显的样子。

["category", "=", "Server"],["siteid", "!=", "145228"],["udf8", "=", "asd"] 

运行代码时,出现以下错误:

enter image description here

但是,如果我只是将字符串复制为纯文本格式,并将其放入模型中,如下所示,则效果很好。我不确定为什么它不起作用,但是以某种方式在我的查询中添加了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;

3 个答案:

答案 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);

     }