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

juzqafwq  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(778)

我从api请求接收数据,它包含一个值“true”或“false”。
在使用pdo::param\u 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”是true)

ddhy6vgd

ddhy6vgd1#

根据这篇文章,你可以这样做:

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

li9yvcax2#

当你试图把 $orderdata['is-business-order'] 在db列中,mysql试图 true 或者 false .
但是 true 或者 false 不能存储在布尔类型列中。所以我们可以用下面的代码 1 或者 0 而不是 true 或者 false .
'businessorder'=>($orderdata['is-business-order']=='true'?1:0)

相关问题