Mysql 2表更新/删除基于条件


mysql 2 tables updation/deletion based on condition

我有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中进行更新。