我正在使用数据映射器模式构建一个 PHP 应用程序,以将我的数据库与域对象分开。我有一个映射器类,它根据数据库中的数据返回站点对象,并接受现有的站点对象以保存回数据库。
我的问题是,在系统中,所有站点中的一个(也是唯一一个)必须标记为“主要”站点,这意味着如果我将一个设置为主要站点,我希望能够自动取消设置当前的初级。
所以,像:
$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);
问题是,自动更新现有主站点的逻辑应该去哪里?它必须在对象保存回数据库之后发生,而不是之前,以防数据库查询失败并且您没有站点作为主要站点。
干杯,杰克