php - 我想删除条件数据。如果数据在另一个表中作为外键可用,则不要删除它
问题描述
我有 3 个表,1 个用于博主,博主 ID 作为外键保存在活动表中,还保存在类别表中作为外键,这实际上是联结表。
我希望当博主ID不在compaign表中时,只需将其删除,但是当它在compaign表中时,不要删除它并粘贴错误..
通过我的代码:当我删除博主并且它的数据在compaign表中时,它只是从类别表中删除数据(这是博主表的连接表)
这是我的模型:
public function delete($id){
if($id != $this->db->query("SELECT blogger_id FROM tbl_campaign_detail WHERE blogger_id = $id"))
{
$query=$this->db->query("DELETE FROM tbl_bloggers_cat WHERE blogger_id = $id AND Cat_id >2000");
$this->db->where('blogger_id', $id);
$this->db->delete('tbl_bloggers');
if($this->db->affected_rows() > 0){
return true;
}else{
return false;
}
}
else
{
}
}
这是我的控制器:
public function delete($id){
$result = $this->bm->delete($id);
if($result){
$this->session->set_flashdata('success_msg', 'Record deleted successfully');
}
else{
$this->session->set_flashdata('error_msg', 'Fail to delete record');
}
redirect(base_url('blogger/index'));
}
查看代码:
<?php $id = $blogger->blogger_id; ?>
<a href="<?php echo base_url('blogger/delete/'.$id); ?>" onclick="return confirm('Do you want to delete this record?');">
<span class="glyphicon glyphicon-trash"></span>
</a>
我希望当我删除博主的记录并且它的 id 作为外键在 compaign 表中时,不要删除此记录,因为显示错误消息。
但是通过这段代码:当我这样做时,它会从类别表中删除博主的类别,其中博主 id 作为外键传递..(这是博主和另一个表的连接表)
解决方案
您需要像这样更改删除功能
function delete($id){
$result = $this->db->query("SELECT blogger_id FROM tbl_campaign_detail WHERE blogger_id = $id")->row();
if(!$result){
$this->db->query("DELETE FROM tbl_bloggers_cat WHERE blogger_id = $id AND Cat_id > 2000");
if($this->db->affected_rows() > 0){
return true;
}
}
return false;
}
推荐阅读
- python - 对不可变对象的引用的 Python 集合
- c# - 尝试从 IGuild 获取 IGuildUser 时如何修复“Nullpointer Exception”
- jquery - 当用户点击离开链接时如何切换类?
- spring-boot - Spring boot 或 Vertx 或任何其他用于反应式微服务开发的框架
- c++ - 构造Hash Table时特定数字引起的分段错误
- c# - 光标隐藏时移动鼠标
- javascript - 可选的反应路由器参数标记 GET 请求错误?
- javascript - 如何在文档集合中获取数组和映射对象?
- c# - OWIN web api CancellationToken 未被调用
- ios - 如何实现 SwiftUI 拉刷新获取新的网络数据?