我从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(因为(bool)'false'为真)
2 回答
根据this post你可以这样做:
当您尝试将
$orderdata['is-business-order']
的值放入DB列时,MySQL会尝试放置true
或false
.但
true
或false
不能存储在布尔类型列中 . 因此,我们可以执行类似下面的代码来获取1
或0
而不是true
或false
.'businessorder'=>($ orderdata ['is-business-order'] =='true'?1:0)