Laravel模式构建器,更新可以为空的时间戳字段

时间:2016-04-08 00:20:47

标签: php mysql laravel timestamp

我正在开发一个项目,我必须存储工作信息。例如job_start_date,job_end_date,payment_received_date。它最初可以为空。一旦作业启动,admin将更新job_start_date和job_end_date列。所以我不能将当前日期和时间设置为这些字段的默认值。问题是,在更新job_start_date字段时,如果laravel发现job_start_date列为null,则会引发错误。在非对象上调用成员函数format()。即使我在模型中声明了protected $dates = ['job_start_date','job_end_date','payment_received_date'];。有什么建议可以解决这个问题吗?

示例代码:

<!-- job start date -->
  <div class="form-group {{ $errors->has('job_start_date') ? 'has-error' : '' }}">
    <label class="col-md-4 control-label" for="job_start_date">Job Start Date</label>
    <div class="col-md-4">
    <input id="job_start_date" name="job_start_date" type="date" value="{{ $job_account_detail->job_start_date->format('Y-m-d') }}" class="form-control input-md">
    {!! $errors->first('job_start_date','<span class="help-block">:message</span>') !!}
    </div>
  </div>

1 个答案:

答案 0 :(得分:0)

您可以在视图中检查空值以避免错误

<input id="job_start_date" name="job_start_date" type="date" value="{{ !is_null($job_account_detail->job_start_date) ? $job_account_detail->job_start_date->format('Y-m-d') : "" }}" class="form-control input-md">

我会在模型中添加一个方法来处理验证和格式化,以使我的生活更轻松:

// in your model
public function getJobStartDateInDateStringFormat() {

    return !is_null($this->job_start_date)
           ? $this->job_start_date->format("Y-m-d")
           : "";

}

然后在您的视图中,您可以调用方法:

<input id="job_start_date" name="job_start_date" type="date" value="{{ $job_account_detail->getJobStartDateInDateStringFormat() }}" class="form-control input-md">