0

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

2 回答 2

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?

SELECT3)当你可以删除时,为什么要这样做?节省网络流量、处理和 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');
于 2012-12-07T01:02:23.073 回答
0

$this->db->select('*')->from('messages')->where('from', $username)->or_where('to', $username);

这实际上解决了这个问题

于 2012-12-09T13:53:20.243 回答