2015-08-19 56 views
1

朋友你好我有2 MySQL表1:類別和category_Dates N之間關係MySQL的2個表更新用/缺失基於條件

類別:

ID Category Frequency 
1 Cat A Half-yearly 
2 Cat B Quarterly 

category_Dates:

ID CatID Date 
1 1 01-Jan-15 
2 1 01-Jul-15 
3 2 01-Jan-15 
4 2 01-Apr-15 
5 2 01-Jul-15 
6 2 01-Oct-15 

根據類別頻率,我在category_date中自動輸入記錄數。例如 當類別頻率=季度時,我在category_date中輸入4個記錄,並帶有該類別的ID。日期將在稍後輸入。

我很困惑,如果想要將頻率從半年到每年編輯一次。如何更改記錄數。請幫助您提出寶貴的建議。我正在使用laravel 4框架結合mysql

+0

小心檢查答案? –

回答

0

如果更改Category表中的頻率,請檢索更新category_id, 刪除category_dates中的所有CatId = category_id,然後在category_Dates中插入新條目。 希望得到這個幫助。 我假設你的模型是Category和CategoryDates。 讓我們更新類別編號1,從半yearlyto季報

$query = Category::find(1); 
$query -> Frequency = 'Quarterly'; 
$query -> save(); 
return $query -> id; 

在CategoryDates模型,你會刪除CATID = 1,並插入新的數據

$catID = 1; 
$query = CategoryModel::where('CatId',$catId) -> delete(); 
$data = ['CatId' => $catID,'date' => 01-Jan-15, ....]; 
CategoryModel::create($data); 
當然假設你將返回新的

更新的類別ID到您的控制器,並調用一個函數在您的CategoryModel中執行更新。 希望得到這個幫助。

+0

看起來像一個很好的解決方法。任何併發症在這 – Natasha

+0

不,很簡單,刪除條目和插入新的條目。 – mdamia

1

最好的方法是與第三表加入日期和類別。仔細看看,你可以看到它的實際上多對多的關係(N到N)作爲1類可以有多個日期。並且一個日期可以是多個類別的一部分,如01-Jan-15也是類別1和2的一部分。

所以使用

類別

id Category Frequency 1 Cat A Half-yearly 2 Cat B Quarterly

日期

id Date 1 01-Jan-15 2 01-Apr-15 3 01-Jul-15 4 01-Oct-15

categories_dates

ID CatID Date_id 1 1 1 2 1 3 3 2 1 4 2 2 5 2 3 6 2 4

+1

不錯........... –

+0

謝謝...... !! –

+0

謝謝。我意識到這一點,但它使整個過程變得複雜,以前我不得不在一張桌子上輸入記錄。現在我必須同時在兩張表中輸入記錄。此外,我必須使用級聯來保持記錄的完整性。有什麼建議麼 – Natasha