繁体   English   中英

加入并更新CodeIgniter

[英]Join and Update in CodeIgniter

我的数据库中有一个用户表,我想与其他两个表(注释,帖子)建立关系。

当我发表评论时,它会根据ID和用户名发布。 帖子也是如此,如果用户发布帖子,则其用户名进入数据库,现在可以说该用户想要更新其信息,例如他的电子邮件,网站,头像img等。

所有新数据都应根据users.id/user_id在其他两个表中进行更新。 我敢肯定这与加入有关,我实际上是在做,但是什么也没发生。

这是我的代码:

public function update($id, $data)
{
    $this->db->select('users.*');
    $this->db->from('users');
    $this->db->join('posts', 'posts.username = users.username','inner');
    $this->db->join('posts', 'posts.user_id = users.id','inner');
    $this->db->join('comments', 'comments.user_id = users.id','inner');
    $this->db->join('comments', 'comments.username = users.username','inner');
    $this->db->join('comments', 'comments.avatar_img = users.avatar_img','inner');
    $this->db->join('comments', 'comments.email = users.email','inner');
    $this->db->join('comments', 'comments.website = users.website','inner');
    // Update info in all tables according to user id.
    $this->db->where('id', $id);

    $query = $this->db->get();

    $this->db->update($this->table, $data);
}

正如您可以在上面的代码中观察到的那样,我尝试从用户表中选择所有内容,并尝试将其与另一个表连接起来以更新其信息。

希望你们能帮助我,谢谢。

这是我要加入的三个表Users表的一点点 在此处输入图片说明

帖子表 在此处输入图片说明

评论表 在此处输入图片说明

为什么将所有信息存储在所有表中有特定原因吗?

将个人数据存储在用户表中,将与帖子相关的数据存储在帖子表中以及将评论数据存储在评论表中会更容易吗?

当您显示帖子时,您将从用户表中提取用户数据。

因此,无需更新您要更新的方式。

如果您想坚持使用存储数据的方式,我认为您想得太过分了。 您不需要联接即可更新数据。 只需使用要发送给该函数的数据分别更新每个表。

手段:

$this->db->where('user_id', $id);
$this->db->update('users', $data);

$this->db->where('user_id', $id);
$this->db->update('posts', $data);

$this->db->where('user_id', $id);
$this->db->update('comments', $data);

您的控制器

 public function update_data()
{
    //Use $id and $data according to your database table's requirements 
    $update_user = $this->model-name->update_user($id, $data);
    $update_post = $this->model-name->update_post($id, $data);
    $update_comments = $this->model-name->update_comments($id, $data);
    if($update_user )
    {
      //Do what you want
    }
     if($update_post )
    {
      //Do what you want
    }
     if($update_comments )
    {
      //Do what you want
    }
}

您的模型

public function update_user($id, $data)
{ 
  $this->db->where('id', $id);
  return $this->db->update('users', $data);
 }

public function update_post($id, $data)
{ 
  $this->db->where('id', $id);
  return $this->db->update('posts', $data);
 }

  public function update_comments($id, $data)
{ 
  $this->db->where('id', $id);
  return $this->db->update('comments', $data);
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM