我有2个Mysql表,category和category_Dates之间的关系为1:N
类别:
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中自动输入记录数。如当类别频率=季度,我输入4记录在category_date与该类别的ID。日期将在稍后输入。
如果我想把频率从半年编辑到一年,我有点困惑。如何更改记录的数量。请多提宝贵意见。我正在使用laravel 4框架与mysql
最好的方法是使用第三个表连接日期和类别。仔细看,你可以看到它的实际上是多对多关系(N对N),因为一个类别可以有多个日期。一个日期可能是多个类别的一部分,比如01-Jan-15
也是第一类和第二类的一部分。
表
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
如果更改了Category表中的频率,则检索更新的category_id,删除CatId= category__id的category_dates中的所有条目,然后在category_dates中插入新的条目。希望能有所帮助。我假设你的模型是Category和CategoryDates。让我们将类别id 1从半年更新为季度
$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中进行更新。