我在项目中创建了删除用户帐户按钮,但无法删除已删除的用户留给其他用户的邮件

时间:2012-12-07 00:17:10

标签: php codeigniter

当用户在其帐户中并点击“删除帐户”时,它应该删除用户以及他们留给用户的消息,并且还停止向其他用户显示为朋友。我有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');
 } 
}

2 个答案:

答案 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 );

这实际上解决了这个问题