DB をドメイン オブジェクトから分離するために、データ マッパー パターンを使用して PHP アプリケーションを構築しています。DB からのデータに基づいて Site オブジェクトを返し、既存の Site オブジェクトを受け入れて DB に保存するマッパー クラスがあります。
私の問題は、システムでは、すべてのサイトのうち 1 つ (そして 1 つだけ) を「プライマリ」サイトとしてマークする必要があることです。つまり、1 つをプライマリとして設定した場合、現在のプライマリ。
したがって、次のようなものです:
$mapper = new Site_Mapper();
$site = $mapper->fetch(2);
$site->isPrimary = true;
$mapper->save($site);
バックグラウンドでどういうわけか自動的にこれを行います:
$mapper = new Site_Mapper();
$site = $mapper->fetch(1);
$site->isPrimary = false;
$mapper->save($site);
問題は、既存のプライマリ サイトを自動的に更新するためのロジックをどこに置くべきかということです。DBクエリが失敗し、プライマリとしてのサイトが残っていない場合に備えて、オブジェクトがDBに保存される前ではなく、後で発生する必要があります。
乾杯、ジャック