我正在構建一個使用數據映射程序模式將PHP數據庫與域對象分開的PHP應用程序。我有一個映射器類,它根據數據庫中的數據返回Site對象,並接受現有的Site對象保存回數據庫。數據映射程序模式和其他對象的自動更新
我的問題是,在系統中,所有網站中的一個(並且只有一個)必須被標記爲「主要」網站,這意味着如果我將其中一個設置爲主要網站,我希望能夠自動取消當前的主要設置。
所以,像這樣:
$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);
的問題是,應該如何使自動更新現有的主站點去的邏輯是什麼?它必須在將對象保存回數據庫之後而不是之前發生,以防萬一數據庫查詢失敗並且您沒有站點作爲主數據庫。
乾杯, 傑克
好的,所以...我已經看了MySQL觸發器的語法,我不知道該怎麼做。該規則應該是:在插入或更新時,如果isPrimary設置爲1,則查找其他具有isPrimary = 1的行,並將它們設置爲0. 任何想法? – 2009-01-30 22:04:27
增加了一個例子。 – bobwienholt 2009-01-30 22:26:53