Codeigniter с помощью Join или где проверить строку результата

Таблица пользователей:

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 в первую очередь, которое сделает это в db вместо того, чтобы делать это в функции модели с помощью цикла foreach и оператора if. Я думаю, вам нужно сначала написать код вместо того, чтобы иметь предположения и никогда не делать этого для проверки, иначе вы можете тратить время, как я.

Но моим первым решением было использовать запрос соединения. $item_id и $user_id передаются от контроллера к модели.

Как мне присоединиться к таблицам, чтобы получить тот же результат?

Мне жаль. Я действительно запутался в вашем вопросе. Вы спрашиваете, "как присоединиться к codeigniter?"

Gilang Pratama 25.10.2018 21:21

Да, я сделал только запрос where в моем вопросе, но сначала я подумал об использовании запроса соединения. Поэтому я спросил, как это сделать в запросе на соединение.

user10262710 02.11.2018 11:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я просто пытаюсь дать вам пример запроса на соединение ниже.

$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.

user10262710 02.11.2018 11:54

Другие вопросы по теме