当删除一件商品时,这件商品对应的会员价格也应该从会员价格表中删除掉。
在删除一件商品之前删除会员价格
两种方法:
程序实现:【用这种,扩展性比较,不需要修改表结构】
protected function _before_delete($option)
{
$id = $option['where']['id']; // 要删除的商品的ID
/*************** 删除原来的图片 *******************/
// 先查询出原来图片的路径
$oldLogo = $this->field('logo,mbig_logo,big_logo,mid_logo,sm_logo')->find($id);
deleteImage($oldLogo);
/**********删除会员价格 *******/
$mpModel=D('member_price');
$mpModel->where(array(
'goods_id'=>array('eq',$id),
))->delete();
}
MYSQL自带的外键:
扩展:如何不使用代码删除,当删除商品时会员价格表中的记录自动被删除?
可以使用MYSQL中自带外键约束来实现【前提:只有InnoDB引擎支持】
drop table if exists p40_member_price;
create table p40_member_price
(
price decimal(10,2) not null comment '会员价格',
level_id mediumint unsigned not null comment '级别Id',
goods_id mediumint unsigned not null comment '商品Id',
foreign key(goods_id) references p40_goods(id) on delete cascade,
key level_id(level_id),
key goods_id(goods_id)
)engine=InnoDB default charset=utf8 comment '会员价格';