首页 文章

如何使用DB插入将布尔值“false”作为0插入?

提问于
浏览
0

我从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 回答

  • 0

    根据this post你可以这样做:

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

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

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

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

相关问题