Как устранить неоднозначность столбцов из разных таблиц в предложении SELECT с помощью построителя запросов CodeIgniterPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как устранить неоднозначность столбцов из разных таблиц в предложении SELECT с помощью построителя запросов CodeIgniter

Сообщение Anonymous »

Я создаю запрос, включающий JOIN. Я впервые работаю с базой данных с помощью построителя запросов и столкнулся с небольшой загвоздкой.
Я хочу присоединить таблицу с названием 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»