簡體   English   中英

Laravel模式構建器,更新可以為空的時間戳字段

[英]Laravel schema builder, update nullable timestamp field

我正在開發一個項目,我必須存儲工作信息。 例如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>

您可以在視圖中檢查空值以避免錯誤

<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">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM