在CodeIgniter中加入和更新

时间:2018-02-16 06:21:25

标签: php codeigniter join codeigniter-3

我的数据库中有一个用户表,我希望与另外两个表(评论,帖子)建立关系。

当我发表评论时,它会根据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);
}

您可以在上面的代码中观察到我正在尝试从用户表中选择所有内容,并且我正在尝试将其与其他表连接,然后更新其信息。

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

以下是我要加入的三个表格 一些用户表 enter image description here

帖子表 enter image description here

评论表 enter image description here

2 个答案:

答案 0 :(得分:0)

您是否存在将所有信息存储在所有表格中的具体原因?

将个人数据存储在用户表中,连接到表格中的帖子的数据以及评论表中的评论数据会不会更容易?

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

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

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

意思是:

$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);

答案 1 :(得分:0)

您的控制器

 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);
 }