【问题标题】:Increment Php Carbon Date in for loop with Laravel使用 Laravel 在 for 循环中增加 Php Carbon 日期
【发布时间】:2016-03-02 03:03:10
【问题描述】:

我尝试在 for 循环中增加碳日期,如下所示

for($x = 0; $x < count($ms); $x++) {

    $msh = MaintenanceServiceNotifications::where('main_service_id', $ms[$x]->id)->where('status', 'done')->orderBy('created_at', 'desc')->first();

    if(Carbon::now() > $msh->created_at->addMinutes($ms[$x]->notification_period*2)) {

        for ($i = 0; $i < sizeof($customersNot)-1; $i++) {

            //here i need to get created_at and 30 minutes for it     
            $created_at[$i] = $msh->created_at->addMinutes($ms[$x]->notification_period);

            MaintenanceServiceNotifications::create([
                'main_service_id' => $ms[$x]->id,
                'user_id' => Auth::user()->id,
                'not_name' => 'some text',
                'created_at' => $created_at[$i]
            ]);
        }
    }
}

我需要在每个 for 循环中增加日期并将其传递给 created_at 例如

在第一个循环中 2015-11-27 23:00:00 然后creteat_at =&gt; 2015-11-27 23:00:00

在第二个循环中 2015-11-27 23:30:00 然后created_at =&gt;2015-11-27 23:30:00

任何建议,谢谢

【问题讨论】:

  • 你的代码出了什么问题?
  • created_at 每个循环中的固定值 这让我在created_at 列中创建一个固定值

标签: php laravel laravel-4 laravel-5 php-carbon


【解决方案1】:

试试这个代码:

$minutes = $ms[$x]->notification_period;
$dt = Carbon::createFromFormat('Y-m-d H:i:s', $msh->created_at);
$dt->addMinutes($minutes);
$create_at = $dt->toDateTimeString();

【讨论】:

  • 感谢您的帮助,但在每个循环中仍然created_at 固定值
  • 在您的简单数据中不正确?
【解决方案2】:

我的一些调整建议,

foreach ($ms as $m) {
    $msh = MaintenanceServiceNotifications::where('main_service_id', $m->id)->where('status', 'done')->latest()->first();

    if (Carbon::now() > $msh->created_at->addMinutes($m->notification_period*2)) {
        for ($i=0; $i<sizeof($customersNot)-1; $i++) {
            MaintenanceServiceNotifications::create([
                'main_service_id' => $m->id,
                'user_id' => Auth::user()->id,
                'not_name' => 'some text',
                'created_at' => $msh->created_at->addMinutes($m->notification_period * $i) // add 30*0, 30*1, 30*2 ...
            ]);
        }
    }
}

【讨论】:

    【解决方案3】:

    我认为这可能是由于 if 语句从未给出 true,我建议进行简单的更改

    if(Carbon::now()->gt( $msh->created_at->addMinutes($ms[$x]->notification_period*2)))
    

    Carbon gt() 函数检查日期是否大于指定给函数的另一个日期。

    【讨论】:

      猜你喜欢
      • 2017-01-27
      • 1970-01-01
      • 2015-06-28
      • 2011-03-28
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      相关资源
      最近更新 更多