传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定的字符串 - 当尝试通过 eloquent 插入数据库数据时
Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, string given - when trying insert db data via eloquent
我正在尝试使用 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'];
比方说,没有更多的错误。
有任何想法吗 ?谢谢!
在您的迭代之一中:
$phpDataArray['Product']
,你没有:$value['ProductCode']
,这是我的假设。
尝试做:
if(is_array($value) && isset($value['ProductCode'])) {
$insert = new FurnizorProduse();
...
}
我正在尝试使用 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'];
比方说,没有更多的错误。
有任何想法吗 ?谢谢!
在您的迭代之一中:
$phpDataArray['Product']
,你没有:$value['ProductCode']
,这是我的假设。
尝试做:
if(is_array($value) && isset($value['ProductCode'])) {
$insert = new FurnizorProduse();
...
}