Таблица пользователей:
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
В таблицах выше я хочу проверить три вещи, прежде чем вставлять строку в таблицу обзора.
Это моя процедура, я проделал два других, кроме первого, поскольку я не уверен и не понимаю, как это сделать.
Я мог бы просто использовать запрос 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. Я думаю, вам нужно сначала написать код вместо того, чтобы иметь предположения и никогда не делать этого для проверки, иначе вы можете тратить время, как я.
Но моим первым решением было использовать запрос соединения. $item_id и $user_id передаются от контроллера к модели.
Как мне присоединиться к таблицам, чтобы получить тот же результат?
Да, я сделал только запрос where в моем вопросе, но сначала я подумал об использовании запроса соединения. Поэтому я спросил, как это сделать в запросе на соединение.






Я просто пытаюсь дать вам пример запроса на соединение ниже.
$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();
В предложении where, какой столбец item_id я должен сравнивать с переданным значением, поскольку идентификатор элемента существует как в таблице элементов, так и в таблице item_review. То же самое для user_id.
Мне жаль. Я действительно запутался в вашем вопросе. Вы спрашиваете, "как присоединиться к codeigniter?"