Codeigniter, используя Join или где проверить строку результата - PullRequest
0 голосов
/ 25 октября 2018

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

User_id (Pk, AI) |Имя |Фамилия


1 |Джон |Доу

2 |Питер |Гриффин

3 |Дональд |Утка

Таблица предметов:

Item_id (PK, AI) |Владелец (FK - user_id) |Item_name


1 |1 |Обувь

2 |2 |Брюки

3 |3 |Рубашка

Таблица_обзоров предметов:

Идентификатор_обзоров предметов (PK, AI) |Item (FK - item_id) |Рецензент (FK - user_id) |Рейтинг |Содержание


1 |1 |2 |4 |Отлично

В приведенных выше таблицах я хочу проверить три вещи, прежде чем вставлять строку в таблицу обзора.

  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 передаются от контроллера к модели.

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

1 Ответ

0 голосов
/ 25 октября 2018

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

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