Как присоединиться к двум разам за одним столом? - PullRequest
0 голосов
/ 30 сентября 2019

Мне нужно дважды присоединиться к одной и той же таблице. Как это сделать в Codeigniter?

TABLE MATCH


  • match_id
  • team_home_id
  • team_away_id
  • score_home
  • score_away
  • group_id
  • round_id
  • победитель
  • дата начала
  • start_time

TABLE TEAM


  • team_id
  • имя
  • код

Это две таблицы, к которым я должен присоединиться. Команда за столом должна дважды присоединиться к игре за столом.

$this->db->select('*')
         ->from('match, team')
         ->join('team AS team_a', 'match.team_home_id = team_a.team_id')
         ->join('team AS team_b', 'match.team_away_id = team_b.team_id')
         ->get()->result();

Мой результат - матч, и только одна из команд: /

1 Ответ

0 голосов
/ 30 сентября 2019

Спасибо, Strawberry за вашу помощь.

По моему запросу я всегда получал последнюю команду, потому что похоже, что Codeigniter перезаписывает столбцы с одинаковыми именами, team_a.name и team_a.codeпредставлены в окончательном результате result_array () как ключ массива "name" и "code", такие же, как team_b.name и team_b.code.

Таким образом, для создания псевдонима для таблиц мне понадобилось не только псевдоним. столбцы:

    $this->db->select('tips.stake, tips.odd, 
    matches.score_home, matches.score_away, matches.winner, matches.start_date, matches.start_time,
    team_home.name AS team_home_name, team_home.code AS team_home_code, team_away.name AS team_away_name, team_away.code AS team_away_code');

    $this->db->from('tips');
    $this->db->join('matches', 'matches.match_id = tips.match_id');
    $this->db->join('`teams` `team_home`', 'team_home.team_id = matches.team_home_id');
    $this->db->join('`teams` `team_away`', 'team_away.team_id = matches.team_away_id');

    $query = $this->db->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...