gpt4 book ai didi

php - Codeigniter 使用 Join 或 where 来验证一行结果

转载 作者:行者123 更新时间:2023-11-30 21:38:04 25 4
gpt4 key购买 nike

用户表:

User_id(Pk,AI) | First_name | Last_name


1 | John | Doe

2 | Peter | Griffin

3 | Donald | Duck

项目表:

Item_id(PK,AI) | Owner(FK - user_id) | Item_name


1 | 1 | Shoes

2 | 2 | Pants

3 | 3 | Shirt

Item_review 表:

Item_review_id(PK,AI) | Item(FK - item_id) | Reviewer(FK - user_id) | Rating | Content


1 | 1 | 2 | 4 | Great

对于上面的表格,在将一行插入评论表格之前我想检查三件事。

  1. 检查评论者是否不是项目所有者(不能评论自己的项目或有偏见的评论)
  2. 表单验证(如果评论者在评级和内容中输入任何内容)
  3. 检查评论是否存在(没有重复评论或每个用户只有一个评论)

这是我的程序,我已经完成了除第一个之外的其他两个,因为我不确定并且对如何执行此操作感到困惑。

我可以简单地使用 get where 查询,例如:

public function check_biased_review($user_id, $item_id){

$this->db->select('*');
$this->db->from('item');
$this->db->where('item_id', $item_id);
$this->db->where('owner', $user_id);
$query = $this->db->get();

if($query->num_rows() > 0){
return TRUE;}
else{
return FALSE;}
}

我实际上通过编写上面的代码解决了这个问题,我有这样的误解,如果有很多评论来找到匹配的行,我将不得不查询这么多行,而我首先忘记了 where 子句,这会做它在数据库中,而不是在模型函数中使用 foreach 循环和 if 语句来完成。我想您必须先编写代码,而不是有假设并且永远不要进行检查,否则您可能会像我一样浪费时间。

但我的第一个解决方案是使用连接查询。 $item_id$user_id 从 Controller 传递到模型。

我将如何加入表格以获得相同的结果?

最佳答案

我只是尝试在下面为您提供一个连接查询示例。

$this->db->select('*');
$this->db->from('Item_review');
$this->db->join('User','Item_review.user_id = User.User_id');
$this->db->join('Item','Item_review.item_id= Item.Item_id');
$this->db->where('item_id', $item_id);
$this->db->where('owner', $user_id);
$query = $this->db->get();

关于php - Codeigniter 使用 Join 或 where 来验证一行结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52994509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com