我對如何在域模型中實現一些業務邏輯有點困惑。 我使用Laravel框架的PHP,但問題是獨立於框架。在模型中實現業務邏輯
我有以下情況:
- 當我更新計劃,我應該關閉相關的全部註冊。
- 生成一個新的備註。
我的模型程序有許多意見和入學人數如下:
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()。
非常感謝!
$ this-> closeEnrollments($ this-> enrollments()); 對於這一行,您傳遞了一個查詢對象。您可能想要傳遞包含註冊的集合.. $ this-> closeEnrollments($ this-> enrollments); –
謝謝Shawn的幫助。 好吧,在這一點上,我會改變... 但是,要調用備註的generate()函數,我應該在程序內創建一個新實例(或者這是一個反模式)? 對不起我的英文不好! ;) – viniciusmr3