Php 日期为空字符串时缺少Laravel碳数据
在我的模型中,我有以下内容:Php 日期为空字符串时缺少Laravel碳数据,php,laravel,php-carbon,Php,Laravel,Php Carbon,在我的模型中,我有以下内容: protected $dates = ['start_date']; 我正在使用“日期”类型的输入字段来选择日期。如果用户删除日期,其值将变为空字符串“”。 更新模型时,出现以下错误: exception: "InvalidArgumentException" file: "C:\www\projects\crm\vendor\nesbot\carbon\src\Carbon\Carbon.php" line: 582 message: "Data missing
protected $dates = ['start_date'];
我正在使用“日期”类型的输入字段来选择日期。如果用户删除日期,其值将变为空字符串“”。
更新模型时,出现以下错误:
exception: "InvalidArgumentException"
file: "C:\www\projects\crm\vendor\nesbot\carbon\src\Carbon\Carbon.php"
line: 582
message: "Data missing"
我可以通过使用这样的变异体来避免这个错误:
public function setStartDateAttribute($value)
{
if ($value) {
$this->attributes['start_date'] = $value;
} else {
$this->attributes['start_date'] = null;
}
}
问题:
有没有比使用mutator更快/更好的方法来处理将空字符串存储为日期的问题?更深入地研究一下: 中间件在5.4中更新 Laravel 5.4在默认中间件堆栈中包括两个新中间件:
TrimStrings
和ConvertEmptyStringsToull
这些中间件将自动调整请求输入值和
将任何空字符串转换为null
。这有助于您正常化
输入输入到应用程序中的每个请求,而不必
担心在每个路线和路线中不断调用trim
函数
控制器
发件人:
因此,当我抓取请求对象时,一个空的日期字段被转换为null。数据库允许这些字段为null,并且一切正常
因此,通过前端,可以无误地输入和删除日期字段。根据您的请求手动更新为空字符串时
\App\Yourmodel::find(7)->update(["your_date_field" => ""]);
我有同样的数据丢失
错误
问题是,您是特别需要传递空字符串,还是让字段为null对您来说是一个更好的选择
\App\Yourmodel::find(7)->update(["your_date_field" => null]);
您使用的是
Carbon::createFromFormat($format,$time,$tz)代码>某处?我没有明确使用它,但Laravel在将字段设置为日期()时使用了它。我以前从未遇到过这种情况。在一个应用程序中,我有许多日期字段。它们在迁移中重新标记为nullable,并在模型上的日期数组中列出。这一切都可以正常工作,无需变异。您可以尝试\App\Yourmodel::find(7)->更新([“您的日期字段”=>”)代码>?现在一切都清楚了。我前端有一个空字符串的原因是,我将数据包装在FormData变量中,以便将文件上载到服务器。我尝试分割文件和数据字段数据,并向服务器发送带有两个变量(数组+文件)的请求,但不幸的是,我只得到了数组axios.post('/api/controller/update/'+this.id,{fd:formData,data:this.data})