mysql 2表根据条件更新/删除

时间:2015-08-19 03:51:56

标签: php mysql

你好朋友我有2个Mysql表,类别和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中自动输入记录数。例如 当类别频率=每季度时,我在category_date中输入4条记录,其中包含该类别的ID。日期将在稍后输入。

如果想要将频率从半年编辑到每年,我很困惑。如何更改记录数。请帮助您提出宝贵的建议。我正在使用带有mysql的laravel 4框架

2 个答案:

答案 0 :(得分:1)

最好的方法是使用第3个表加入日期和类别。仔细看一下,你可以看到它的实际上是多对多的关系(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)

如果更改“类别”表中的频率,请检索更新category_id, 从category_dates中删除所有CatId = category_id,然后在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返回给您的控制器并调用funtionn来在您的CategoryModel中进行更新。 希望这有帮助。