Php 提前1个月添加记录

Php 提前1个月添加记录,php,laravel,Php,Laravel,我有以下代码: $tasks = new Task(); $tasks->text = 'Velo'; $tasks->role_id = 1; $tasks->progress = 0.0; $tasks->duration = 1; $tasks->start_date = Carbon::now()->addMonth(); $tasks->parent = 0; $tasks->type = "project"; $tasks->co

我有以下代码:

$tasks = new Task();
$tasks->text = 'Velo';
$tasks->role_id = 1;
$tasks->progress = 0.0;
$tasks->duration = 1;
$tasks->start_date = Carbon::now()->addMonth();
$tasks->parent = 0;
$tasks->type = "project";
$tasks->color = '#ccc';

$tasks->save();

$tasks = new Task();
$tasks->text = 'Auto';
$tasks->role_id = 1;
$tasks->progress = 0.0;
$tasks->duration = 1;
$tasks->start_date = Carbon::now()->addMonth();
$tasks->parent = 0;
$tasks->type = "project";
$tasks->color = '#ccc';

$tasks->save();

$tasks = new Task();
$tasks->text = 'Moto';
$tasks->role_id = 1;
$tasks->progress = 0.0;
$tasks->duration = 1;
$tasks->start_date = Carbon::now()->addMonth();
$tasks->parent = 0;
$tasks->type = "project";
$tasks->color = '#ccc';

$tasks->save();

如何提前一个月添加这些记录?我需要循环吗?但是日期呢?如何添加记录?我需要这个月的每一天都有他们的记录。

对于这种类型的场景,你可以使用变异基因

这里有一个例子

 public function setStartDateAttribute($value)
    {
        $this->attributes['start_date'] = Carbon::now()->addMonth();
    } 
将上述函数放入您的模型中,之后您不需要为每次插入设置日期

更多信息


希望这能有所帮助。

如果要添加多个任务,请始终使用循环。希望下面的代码能帮助您

// Array of tasks
$task_array = [
    [
        "text" => 'Velo',
        "role_id" => 1,
        "progress" => 0.0,
        "duration" => 1,
        "parent" => 0,
        "type" => "project",
        "color" => '#ccc'
    ],
    [
        "text" => 'Auto',
        "role_id" => 1,
        "progress" => 0.0,
        "duration" => 1,
        "parent" => 0,
        "type" => "project",
        "color" => '#ccc'
    ]
];


// Loop to save tasks from task_list
foreach ($task_array as $task) {
    $tasks = new Task();
    $tasks->text = $task["text"]
    $tasks->role_id = $task["role_id"]
    $tasks->progress = $task["progress"]
    $tasks->duration = $task["duration"]
    $tasks->parent = $task["parent"]
    $tasks->type = $task["type"]
    $tasks->color = $task["color"]

    // Next month date from now
    $next_month_date = date('Y-m-d', strtotime('+1 month'));
    $tasks->start_date = $next_month_date;

    // Save Task
    $tasks->save();
}

是的,您需要一个循环和一个日期周期来循环

$from = \Carbon\Carbon::today();
$to = $from->copy()->addMonth();

$period = new \DatePeriod($from, new \DateInterval('P1D'), $to);

foreach ($period as $date) {
    $tasks = new Task();
    $tasks->text = 'Velo';
    $tasks->role_id = 1;
    $tasks->progress = 0.0;
    $tasks->duration = 1;
    $tasks->start_date = $date;
    $tasks->parent = 0;
    $tasks->type = "project";
    $tasks->color = '#ccc';

    $tasks->save();

    $tasks = new Task();
    $tasks->text = 'Auto';
    $tasks->role_id = 1;
    $tasks->progress = 0.0;
    $tasks->duration = 1;
    $tasks->start_date = $date;
    $tasks->parent = 0;
    $tasks->type = "project";
    $tasks->color = '#ccc';

    $tasks->save();

    $tasks = new Task();
    $tasks->text = 'Moto';
    $tasks->role_id = 1;
    $tasks->progress = 0.0;
    $tasks->duration = 1;
    $tasks->start_date = $date;
    $tasks->parent = 0;
    $tasks->type = "project";
    $tasks->color = '#ccc';

    $tasks->save();
}
您还可以简化循环

$tasks = ['Velo', 'Auto', 'Moto'];

foreach ($period as $date) {
    foreach ($tasks as $task) {
        $task = new Task();
        $task->text = $task;
        $task->role_id = 1;
        $task->progress = 0.0;
        $task->duration = 1;
        $task->start_date = $date;
        $task->parent = 0;
        $task->type = "project";
        $task->color = '#ccc';
        $task->save();
    }
}

循环什么?你的问题不清楚。如果你需要在日期之间循环。可以使用DateTime()函数获取月份。很难理解需要什么,在数据库中我会提前一个月有记录?是的。从应用程序服务器时间提前一个月。我需要提前一个月在数据库中记录这些记录。它将从应用程序服务器时间提前一个月保存到数据库中。如果您的服务器日期为2018-01-01,则将
开始日期设置为2018-02-01否。我需要提前一个月将记录写入数据库。我需要每天有3个数据库记录。今天是23岁。我没有记录,我需要记录,明天我需要记录e.t.c