php - Laravel 架构构建器,更新可为空的时间戳字段

标签 php mysql laravel timestamp

我正在开发一个项目,我必须在其中存储工作信息。例如 job_start_date,job_end_date,payment_received_date。它最初可以为空。一旦作业开始,管理员将更新 job_start_date 和 job_end_date 列。所以我不能将当前日期和时间设置为这些字段的默认值。问题是,在更新 job_start_date 字段时,如果 laravel 发现 job_start_date 列为空,则会抛出错误。调用非对象的成员函数 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>

最佳答案

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

<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")
           : "";

}

然后在您的 View 中您可以调用该方法:

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

关于php - Laravel 架构构建器,更新可为空的时间戳字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36489451/

相关文章:

python - 为什么当 python 使用 MySQLdb 时会得到不同的字符集?

MySQL:当其他人具有相同数据时选择一条记录

php - 避免除以零错误 Laravel 框架

php - pg_num_rows 错误

php - 将一个值与数组进行比较

mysql - 仅当某些属性包含相同值时才自动增量

php - 多封抄送电子邮件表示电子邮件不符合 RFC 2822, 3.6.2

php - 如何获取多对多关系的id?

javascript - 使用 JavaScript 解析 JSON 对象数组

PHP HTML if then else 语句