【问题标题】:Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, string given - when trying insert db data via eloquent传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定字符串 - 尝试通过 eloquent 插入 db 数据时
【发布时间】:2021-12-24 01:42:01
【问题描述】:

我正在尝试使用 Laravel 的 Eloquent ORM 将一些记录插入到数据库中。 数据存储在一个数组中,如下所示(数组中有多个元素)

我正在循环的初始数组看起来像这样

array:1 [▼
  "Product" => array:4416 [▼
    0 => array:9 [ …9]
    1 => array:9 [ …9]
    2 => array:9 [ …9]
    3 => array:10 [ …10]
---------------------------------------------------------------------
array:9 [▼
  "ProductCode" => "EWS1025CAM"
  "Vendor" => "ENGENIUS"
  "ProductType" => "Security - Surveillance Indoor Camera"
  "ProductCategory" => "Other"
  "ProductDescription" => "Managed AP-CAM Indoor Dual Band 11ac 2T2R 300+867Mbps 2MP dome 4mm IR20m PoE.af μSDHC (Access point - Camera, Power Adapter (12V/1.5A), T-rail mounting kit, mou ▶"
  "Image" => "https://www.it4profit.com/catalogimg/wic/1/EWS1025CAM"
  "ProductCard" => "https://content.it4profit.com/itshop/itemcard_cs.jsp?ITEM=171208071213009310&THEME=asbis&LANG=ro"
  "AttrList" => array:1 [▶]
  "Images" => array:1 [▶]
]

我正在遍历它并插入这样的值

foreach ($phpDataArray['Product'] as $key => $value)
        {
                $insert = new FurnizorProduse();
                $insert->product_id = $value['ProductCode'];
                $insert->product_data = json_encode($value);
                $insert->date = new \DateTime();
                $insert->module_id = 58;
                $insert->save();
        }

即使数据已正确插入数据库,我也会得到“传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定字符串”。 导致这种情况的代码行是$insert->product_id = $value['ProductCode']; 好像我用一个整数替换了 $value['ProductCode'];,比如说,没有更多的错误。 有任何想法吗 ?谢谢!

【问题讨论】:

  • foreach 节目中的 var_dump($value['ProductCode']) 是什么?
  • 显示string(10) "EWS1025CAM" string(7) "UNVR-EU" string(12) "TS.PMPAP.NEW" string(11) "RGM-M816P-E" string(9) "RMC-M95-E"...
  • 对不起,反之亦然。传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定字符串 - 参数必须是数组。我想,这个参数不是 $insert->product_id = $value['ProductCode'];您应该更好地探索代码。研究方法可能是

标签: php arrays laravel eloquent


【解决方案1】:

在您的一次迭代中:

$phpDataArray['Product'],你没有:$value['ProductCode'],这是我的假设。

尝试做:

if(is_array($value) && isset($value['ProductCode'])) {
$insert = new FurnizorProduse();
...
}

【讨论】:

  • 嗨!是的,你是对的 !其中一个值为空。 isset($value['ProductCode']) 没有做到这一点,所以我用!empty($value['ProductCode']) 替换了它,现在可以完美运行了。谢谢!
猜你喜欢
  • 2018-03-22
  • 2019-08-23
  • 2021-08-19
  • 2021-02-08
  • 2020-10-15
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 2018-05-28
相关资源
最近更新 更多