【发布时间】:2015-01-27 15:52:27
【问题描述】:
我会尽量简单地解释这一点,因为它涉及一个电子商务音乐网站。
所以我有一个基于 CakePHP 的应用网站,这是一个电子商务网站,我们销售在线音乐。
我遇到的问题是,在有人购买专辑后,该专辑的流派行被删除,然后专辑不包含任何详细说明其所属音乐流派的行。
简单来说:
-
id=65 的专辑包含 5,7 和 10 的流派。这是详细说明流派的表格的样子:
专辑类型(表)
fk_genre fk_album 12 87 9 87 5 65 7 65 10 65
用户购买 id=65 的相册后,包含fk_album id 的album_genre 表行将被删除。
fk_genre fk_album
12 87
9 87
当用户购买专辑时会发生什么?
- 用户使用信用卡或店内信用卡付款
-
如果接受付款,则继续创建 MusicItem 行:
2.1 MusicItem row contains: fk_album, fk_receipt, fk_user, downloads 继续增加专辑表中专辑的销售编号
当有人购买专辑时,附近或执行的代码不会编辑/处理album_genre 表,或任何其他地方,除非您在后端创建专辑以添加到商店...
我怀疑这可能是数据库的问题?我似乎无法在日志或调试日志或任何东西中找到问题 =/ 需要一些想法帮助来解决此错误。
更新:
- 打了
SHOW TRIGGERS,然后空手而归。 -
发现
album_genre有 3 个约束,即使它只有 2 列:- Columns are: fk_album, fk_genre - Constraints are `PRIMARY`, `FOREIGN KEY` and `FOREIGN KEY`
更新 2:
-
显示步骤 3 中的代码片段
public function incrementSales($idAlbum) { $parameters = array( 'fields'=>array('Album.album_sales'), 'recursive'=>-1, 'conditions'=>array('Album.id_album'=>$idAlbum) ); $album = $this->find('first',$parameters); $newQuantity = $album['Album']['album_sales'] + 1; $this->read(null,$idAlbum); $this->set('album_sales',$newQuantity); if($this->save()) return true; else return false; }
【问题讨论】:
-
你有什么触发器吗?正在执行某些操作以删除数据,而不仅仅是消失。
-
我刚刚对数据库执行了
SHOW TRIGGERSsql,结果返回为空 -
据我所知,您的第 3 步是处理任何查询的唯一代码行。我们可以看看那段代码
标签: php mysql sql cakephp lamp