我从API请求接收数据,它包含一个值“ true”或“ false”。
在我使用PDO :: PARAM_BOOL绑定值并将其插入MySQL
现在我正在使用Laravel,我想知道如何将这个值插入为布尔值1或0。
我创建了一个包含
的迁移$table->boolean('businessorder');
我将数据保存在数组中并将其插入到我的表中:
$orderarray = [];
foreach($csv as $data => $orderdata){
$orderarray[] = [
...
'businessorder' => $orderdata['is-business-order'],
...
];
}
我收到以下错误
SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'false' for column 1
错误消息还显示要插入数据库中的数据为“ false”而不是0。
我如何确保它将插入0或1而不是true或false
当我这样做
'businessorder' => (bool)$orderdata['is-business-order'],
它将所有内容设置为1(因为(布尔)“ false”为true)
答案 0 :(得分:0)
当您尝试将$orderdata['is-business-order']
的值放入DB列时,MySQL尝试将true
或false
放入。
但是true
或false
不能存储在布尔类型列中。因此,我们可以执行以下代码来获取1
或0
而不是true
或false
。
'businessorder'=>($ orderdata ['is-business-order'] =='true'?1:0)
答案 1 :(得分:0)
根据this post,您可以执行以下操作:
'businessorder' => filter_var($orderdata['is-business-order'], FILTER_VALIDATE_BOOLEAN),