当用户在其帐户中并点击“删除帐户”时,它应该删除用户以及他们留给用户的消息,并且还停止向其他用户显示为朋友。我有2个这样的工作,但如果他们登录,消息仍会显示给另一个用户。我已经创建了一个用户可以用来删除朋友消息的功能,我试图将其实现为一个新功能,所以它会删除邮件,但是来自特定朋友。这是原始的deleteMsg,它将删除所有字段(message_id,from,to,message),以便在消息数据库中删除该消息。此功能出现在我的消息模型中:
function deleteMsg($message_id)
{
$this->db->where(array('message_id' => $message_id));
$this->db->delete('messages');
}
这是我正在尝试实现的功能,这样当调用删除帐户时,它将删除此现在已删除的用户在其他用户主页上留下的所有邮件。它也出现在我的模型中:
function deleteAccountMsg($message_id, $from)
{
$delAcctMsg = $this->db->select('*')->from('messages')->where('message_id', $message_id)->where('from', $from);
$delete = $this->db->delete('messages', $delAcctMsg);
}
最后,我的控制器中的DeleteUserAccount函数应该抓取与用户关联的所有内容并将其删除:
function Deleteuseraccount()
{
parent::__construct();
$this->load->model("membership");
$this->load->model("friends");
$this->load->model("messages");
$username = $this->session->userdata('username');
$this->membership->deleteUser($username);
$this->friends->deleteMemberFriend($username, $friendname);
$this->messages-> deleteAccountMsg($message_id, $from);// this is the function I'm calling that isn't deleting the associate messages from the deleted user
$this->session->sess_destroy();
redirect('start');
}
}
答案 0 :(得分:0)
您一次只删除(通过选择)一条消息。您需要删除邮件ID限制
$delAcctMsg = $this->db->select('*')->from('messages')->where('from', $from);
$delete = $this->db->delete('messages', $delAcctMsg);
一些注意事项
1)首先写入伪SQL
您可以通过在PHP中拼写出来来解决您想要做的事情
SELECT *
FROM messages
WHERE from=$from
然后,它为您提供SQL模型所需的链。
2)为什么SELECT *
只需要选择message_id?
3)为什么只有删除时才会SELECT
?节省网络流量,处理和mySQL调用。
$delete = $this->db->delete('messages')->where('from', $from);
4)如果你想改编以前的功能,你可以分成几个部分。像
这样的东西// (Untested - try it first on test data)
$this->db->where('from', $from);
if ($message_id) {
$this->db->where('message_id', $message_id);
}
$this->db->delete('messages');
答案 1 :(得分:0)
$ this-> db-> select('*') - > from('messages') - > where('from',$ username) - > or_where('to',$ username );
这实际上解决了这个问题