【问题标题】:Laravel: How to add number of days to a date?Laravel:如何在日期中添加天数?
【发布时间】:2018-12-06 20:03:08
【问题描述】:

我有一个表单,我在其中插入 start_date 字段(日期格式),我想在存储之前通过控制器自动分配 end_date(+180 天)。

我的商店控制器很简单:

public function show($id)
{
    $ticket = Ticket::find($id);
    return view('tickets.show', compact('ticket'));
}

等于我的更新控制器:

public function update(Request $request, $id)
{
    $ticket = Ticket::find($id);
    $ticket->fill($request->all())->save();
    return redirect()->route('tickets.show', $ticket->id)->with('info', 'Datos actualizados con éxito');
}

你知道吗?

【问题讨论】:

  • 您的代码中没有存储方法。您提供了 show 方法。

标签: php laravel date controller


【解决方案1】:

在你初始化Ticket对象之后加入这一行:

$ticket->end_date = $request->input('start_date')->addDays($numDays);

edit-01:

在您的模型中:定义以下代码。

protected $dates = ['created_at', 'updated_at', 'start_date'];

【讨论】:

  • addDays 是 Carbon 的一个函数,但我的系统中没有这个函数。还有其他方法吗?
  • @Drennos,Laravel 附带 Carbon。你应该有这个。
  • 我收到这条消息:调用字符串上的成员函数 addDays()
  • 您可以将 $ticket->end_date 设置为 $request->input('start_date') 值。之后更新票证,如 $ticket->end_date = $ticket->end_date->addDays(180);因为在模型中它应该是一个 Carbon 对象
【解决方案2】:

convert your string to DateTime,然后做

$date->add(new \DateInterval('P180D')); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-03
    • 2012-06-10
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 2018-03-04
    相关资源
    最近更新 更多