我的数据库中有一个用户表,我希望与另外两个表(评论,帖子)建立关系。
当我发表评论时,它会根据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);
}
您可以在上面的代码中观察到我正在尝试从用户表中选择所有内容,并且我正在尝试将其与其他表连接,然后更新其信息。
我希望你们能帮助我,谢谢。
答案 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);
}