ドメイン モデル内にビジネス ロジックを実装する方法について、少し混乱しています。私は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
}
}
私のコントローラーは、モデル Programme で関数 update() を呼び出します。モデルをテスト可能にし、正しいパターンに従うことができるように、この状況をどのように実装できますか? それを処理し、クラス Remark で関数 generate() を呼び出し、クラス Enrollments で close() 関数を呼び出す最善の方法がわからないためです。
どうもありがとう!