2016-02-03 24 views
0

我希望在创建新学生时能够为学生保存“追随日期”。此后续日期需要在未来2周。在Laravel创建新记录时设置自定义日期字段

我已成功地做到这一点在控制器如下:

public function store(StudentRequest $request) 
{ 
    $data = $request->all(); 

    $data['followup'] = Carbon::now()->addWeeks(2); 

    $student = Student::create($data); 

    // .... 
} 

但是,这感觉就像一个非常啰嗦的做事方式。我觉得应该有一种方法可以在代码少的模型上自动执行。我想过使用一个Mutator,但这不起作用,因为'followup'字段实际上并没有从任何地方设置。

回答

1

您可以在模型扩展save功能是这样的:

... 
public function save(array $options = []) { 

    if(!$this->exists){ # only before creating 
     $this->attributes['followup'] = Carbon::now()->addWeeks(2); 
    } 

    return parent::save($options); 
} 
... 
+0

完美的作品,因为它只能执行它首先创建记录,这正是我想要的。 – Joseph