codeigniter

zf9nrax1  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(526)

用户表:
用户名(pk,ai)|名字|姓|
约翰·多伊
2 |彼得|格里芬
3 |唐老鸭
项目表:
物品| id(pk,ai)|所有者(fk-用户| id)|物品|名称
1 | 1 |鞋
2 | 2 |裤
3 | 3 |衬衫
项目评审表:
项目|评审| id(pk,ai)|项目(fk-项目| id)|评审者(fk-用户| id)|评分|内容
1 | 1 | 2 | 4 |很棒
对于上面的表,在将行插入review表之前,我要检查三件事。
检查审阅者是否不是项目所有者(无法审阅自己的项目或有偏见的审阅)
表单验证(如果评审员在评分和内容中输入了任何内容)
检查是否存在复查(没有重复复查或每个用户只有一次复查)
这是我的程序,我已经做了其他两个除了第一个,因为我不确定和困惑如何做到这一点。
我可以简单地使用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子句,它将在db中执行,而不是在带有foreach循环和if语句的model函数中执行。我想你必须先编写代码,而不是有假设,从来没有做过检查,否则你可能会像我一样浪费时间。
但我的第一个解决方案是使用连接查询。 $item_id 以及 $user_id 从控制器传递到模型。
我该如何加入表以获得相同的结果?

cl25kdpy

cl25kdpy1#

我只是在下面给你一个连接查询的例子。

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

相关问题