我对如何在我的领域模型中实现一些业务逻辑有点困惑。我将 php 与 Laravel 框架一起使用,但问题与框架无关。
我有以下情况:
- 当我更新程序时,我应该关闭所有与之相关的注册。
- 生成新的备注。
我的模型程序有许多备注和注册如下:
ProgrammeController extendes Controller {
public function update($id)
{
$programme = Programme::find($id);
$programme->fill(Input::all());
$programme->update();
//Redirects .....
}
}
Programme extends Eloquent {
public function update()
{
if(!$this->valid())
return false;
$this->save();
//Should close all enrollments
$this->closeEnrollments($this->enrollments());
//Should generate a new remark
}
private function closeEnrollments($enrollments)
{
foreach($enrollments as $enrollment)
{
$enrollment->close();
}
}
public function enrollments()
{
return $this->hasMany('Enrollment');
}
public function remarks()
{
return $this->hasMany('Remark');
}
}
Enrollment extends Eloquent {
public function programme()
{
return $this->belongsTo('Programme');
}
public function close()
{
//do something
}
}
Remark extends Eloquent {
public function programme()
{
return $this->belongsTo('Programme');
}
public function generate()
{
//do something
}
}
我的控制器在模型程序中调用函数 update()。我怎样才能实现这种情况,以便我的模型可以测试并遵循正确的模式?因为我不知道处理它并在类 Remark 中调用函数 generate() 和在类 Enrollments 中调用 close() 的最佳方法是什么。
非常感谢!