如何通过数据库插入将布尔值“ false”插入为0?

时间:2018-06-28 08:32:04

标签: php mysql laravel insert boolean

我从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)

2 个答案:

答案 0 :(得分:0)

当您尝试将$orderdata['is-business-order']的值放入DB列时,MySQL尝试将truefalse放入。

但是truefalse不能存储在布尔类型列中。因此,我们可以执行以下代码来获取10而不是truefalse

'businessorder'=>($ orderdata ['is-business-order'] =='true'?1:0)

答案 1 :(得分:0)

根据this post,您可以执行以下操作:

'businessorder' => filter_var($orderdata['is-business-order'], FILTER_VALIDATE_BOOLEAN),