在我的刀片编辑表单中,我有这个:
<input type="text" name="birth" class="form-control" id="birth" value="{{ \Carbon\Carbon::parse($associado->birth)->format('d/m/Y') }}">
问题是:如果
$associado->birth
在数据库中为 NULL,Carbon 将返回当前日期。
我可以做什么来避免这种情况?
您需要检查该值是否为
null
。
此外,您可以将
birth
添加到 eloquent 模型中的 $dates
数组属性中。
protected $dates = [
'dates'
];
这将告诉雄辩模型将此列转换为
Carbon
实例,就像对 created_at
和 updated_at
所做的那样。如果列如果 null
它将简单地返回 null。
您的代码将类似于:
{{ $associado->birth ? $associado->birth->format('d/m/Y') : null }}
希望这有帮助!
在用 Carbon 解析它之前检查
$associado->birth
是否为 NULL。
如果它有一个真值,则它不是 NULL,您可以解析它 - 否则只需在您的值中返回 set null 。
这是使用三元运算符的示例
value="{{ $associado->birth ? \Carbon\Carbon::parse($associado->birth)->format('d/m/Y') : null}}
话又说回来,当使用这么多逻辑时,应该将其放在它自己的函数中。
您可以使用
createFromFormat()
的Carbon
来完成。
value = "{{$associado->birth ? \Carbon\Carbon::createFromFormat('d\m\Y',
$associado->birth)->toDateString() : null}}"
这将检查数据库中存储的日期的字符串值,并在
Null
值的情况下给出空。
希望你能理解。
由于我们期望
parse
函数专门返回一个 Carbon(正如解析所暗示的那样),因此它返回一个 Carbon 实例。您可以使用 make
函数来代替,以便在参数为 null 的情况下能够获取 null。Carbon::parse(null); // Carbon instance of now Carbon::parse('2019-06-15 12:34:54'); // Carbon instance Carbon::make(null); // null Carbon::make('2019-06-15 12:34:54'); // Carbon instance