如果变量为空,Carbon 获取当前日期

问题描述 投票:0回答:4

在我的刀片编辑表单中,我有这个:

<input type="text" name="birth" class="form-control" id="birth" value="{{ \Carbon\Carbon::parse($associado->birth)->format('d/m/Y') }}">

问题是:如果

$associado->birth
在数据库中为 NULL,Carbon 将返回当前日期。

我可以做什么来避免这种情况?

php laravel laravel-blade php-carbon
4个回答
5
投票

您需要检查该值是否为

null

此外,您可以将

birth
添加到 eloquent 模型中的
$dates
数组属性中。

protected $dates = [
    'dates'
];

这将告诉雄辩模型将此列转换为

Carbon
实例,就像对
created_at
updated_at
所做的那样。如果列如果
null
它将简单地返回 null。

您的代码将类似于:

{{ $associado->birth ? $associado->birth->format('d/m/Y')  : null }}

希望这有帮助!


1
投票

在用 Carbon 解析它之前检查

$associado->birth
是否为 NULL。

如果它有一个真值,则它不是 NULL,您可以解析它 - 否则只需在您的值中返回 set null 。

这是使用三元运算符的示例

value="{{ $associado->birth ? \Carbon\Carbon::parse($associado->birth)->format('d/m/Y') : null}}

话又说回来,当使用这么多逻辑时,应该将其放在它自己的函数中。


1
投票

您可以使用

createFromFormat()
Carbon
来完成。

value = "{{$associado->birth ? \Carbon\Carbon::createFromFormat('d\m\Y',
          $associado->birth)->toDateString() : null}}"

这将检查数据库中存储的日期的字符串值,并在

Null
值的情况下给出空。

希望你能理解。


0
投票

由于我们期望

parse
函数专门返回一个 Carbon(正如解析所暗示的那样),因此它返回一个 Carbon 实例。您可以使用
make
函数来代替,以便在参数为 null 的情况下能够获取 null。
正如 Carbon 回购协议中的问题中提到的,

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
© www.soinside.com 2019 - 2024. All rights reserved.