Проблема заключается в следующем:
SELECT * FROM (users, users)
Я предполагаю, что вы пытаетесь соединить таблицу с самим собой, но вы не можете сделать это без предоставления псевдонимов таблицам, в противном случае база данных незнать, на какую сторону соединения вы ссылаетесь, когда ссылаетесь на поля из него.
Попробуйте:
SELECT *
FROM users u1, users u2
JOIN user_profiles ON u1.id = user_profiles.user_id
Обновление:
Мой ответ выше был написан на основе сообщения об ошибке, но я не заметил ссылку на код (с тех пор я добавил код, чтобы включить его в вопрос).
Я не слишком знаком с CIНо я чувствую, что ваша проблема заключается в следующих трех строках:
private $table_name = 'users';
$this->db->from('users');
$query = $this->db->get($this->table_name);
В строке 3 вы явно get
ting $this->table_name
, который указывает на таблицу users
, как показано в строке 1).Однако, явно указав в строке 2 таблицу from
, также указанную на users
, я думаю, что вы случайно настраиваете соединение между двумя таблицами.Поскольку обе эти таблицы одинаковы и не имеют псевдонимов, это приводит к ошибке.Попробуйте удалить строку $this->db->from('users');
и посмотреть, решит ли это проблему.
Обновление 2:
Я читал Руководство пользователя CodeIgniter и, похоже, вам не нужно ничего указывать в качестве параметра для $this->db->get()
, когда вы используете построение запроса с использованием таких методов, как from()
.Я бы предложил просто изменить эту строку:
$query = $this->db->get($this->table_name);
на эту:
$query = $this->db->get();
Подробнее см. на этой странице .