Я хочу присоединить таблицу с названием Companies к таблице пользователей, чтобы я мог получить название компании и т. д., в которой находится пользователь. Я сделал это примерно так:
Код: Выделить всё
function get_profile_by_username($username)
{
$this->db->join('companies', $this->table_name . '.company_id = companies.id');
$this->db->where('LOWER(username)=', strtolower($username));
$query = $this->db->get($this->table_name);
if ($query->num_rows() == 1)
return $query->row();
return NULL;
}
Обычно, когда я пишу необработанный запрос, я присваиваю псевдонимы таблицам, и результат будет чем-то вроде u.company_id, c.name. Так что я бы знал, что имя не имеет ничего общего с пользователем, но, конечно, это название компании. И хотя это не проблема сейчас, но потенциально в будущем, столбец id, очевидно, не может сосуществовать в наборе результатов, поэтому он перезаписывается!
Как мы можем добиться такого рода различия между полями, поступающими из определенных таблиц? Или есть лучший способ объединения таблиц и работы с объединенными наборами данных/объектами запроса?
Изменить:
Если бы я делал это как необработанный запрос, я бы сделал:
Код: Выделить всё
SELECT u.id, u.username, c.name
FROM users AS u
JOIN companies AS c
ON c.id = u.company_id
WHERE u.username = 'foobar';
Подробнее здесь: https://stackoverflow.com/questions/100 ... sing-codei
Мобильная версия