Построитель запросов Codeigniter работает некорректно - PullRequest
1 голос
/ 19 апреля 2020

Может кто-нибудь объяснить разницу между этими кодами? Поскольку построитель запросов не дает правильный результат, а другой запрос дает правильный результат.

В чем разница, которую я не вижу?

$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');

Запрос, который дает правильный результат

SELECT m.*,c.COUNTRY_NAME FROM members m LEFT JOIN country c ON c.COUNTRY_ALPHA2_CODE = m.location WHERE c.LANG = "EN"; 

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

Чтобы получить полную строку запроса с CI, вам нужно добавить следующую строку:

$query=$db->get(); к вашему подходу.

полный код будет выглядеть так:

$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');
$query=$db->get();

после этой строки вы можете проверить вывод строки SQL с помощью:

echo $this->db->query();

отсюда вы продолжите с Генерация результатов запроса для ваших просмотров

ответ на комментарий:

'$this->db->where('c.LANG', 'EN');' не работает. эта строка всегда возвращает первый язык в db

, вам нужно поместить языковой запрос в объединение:

$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','(c.COUNTRY_ALPHA2_CODE = m.location AND c.LANG=\'EN\')', 'left');
$query=$db->get();
0 голосов
/ 19 апреля 2020

Попробуйте это:

$this->db->select('m.*');
$this->db->select('c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');
...