【发布时间】:2022-01-17 13:43:48
【问题描述】:
所以我在 Laravel 中创建了一个可以为空的布尔列
$table->boolean('colName')->nullable();
我遇到的问题是我想在其中插入一个空值。
但据我所知,如果您分配 null(使用 Eloquent 的创建或更新),php 会将 null 评估为 false,从而将 0(false)分配到列中。
$toInsert = null;
这不起作用。
我如何使用我的代码
首先我从表单中获取输入
$nullableVal = $request->input('nullable-value');
if($nullableVal == "yes"){
$toInsert = true;
}else if($nullableVal == "no"){
$toInsert = false;
}else{
$toInsert = null;
}
我的商店/通过 eloquent 更新
$this->repository->update(['nullableVal' => $toInsert]);
有没有办法解决这个问题?
谢谢
【问题讨论】:
-
那为什么不投呢?
(bool) $toInsert虽然这将插入为 false 而不是 null。如果您希望它为空,请不要插入任何内容。if(!is_null($toInsert)) .. -
如果你赋值为null,它将为null,你测试过吗?这都是假设吗?代码是如何分配空值的?将其添加到您的问题中。
-
@N69S 经测试是的。我会更新我的帖子,但要点是:我收到来自表单的输入。此表单是一个包含三个选项的选择:是、否、不需要。然后在存储/更新之前,我有一个 if else 来检查输入的位置是、否或不需要。是 = 真,否 = 假,不需要 = 空。尽管赋值为 null,但它的计算结果为 false。
-
@very_naisu 您的“存储库”更新方法中的代码正在将 null 更改为其他内容(或忽略更新)检查它。仅作为一般信息,PHP 不会无缘无故地将 null 等值更改为零。当您将其转换为布尔值时,就会发生更改。比如当你做
if (null)时,它会被认为是if(false) -
@N69S 我会再次检查我的代码。谢谢
标签: php laravel eloquent laravel-8