Codeigniter: MySQL, где пункт и цитаты - PullRequest
1 голос
/ 07 апреля 2009

Запрос в CodeIgniter :

$this->db->select('comments.created_at, comments.section_id, comments.submittedby_id, users.username, comments.text, sections.name');
$this->db->order_by('comments.created_at', 'desc');
$this->db->where('comments.submittedby_id',  'users.user_id'); 
$this->db->where('comments.section_id', 'sections.id'); 

$query = $this->db->get(array('comments', 'users', 'sections'),10);

Создание SQL-запроса :

SELECT pdb_comments. created_at, pdb_comments. section_id, pdb_comments. submittedby_id, pdb_users. username, pdb_comments. text, pdb_sections. name ОТ (pdb_comments, pdb_users, pdb_sections) ГДЕ pdb_comments. submittedby_id = 'users.user_id' AND pdb_comments. section_id = ORSER BY pdb_comments. created_at desc LIMIT 10

Проблема в том, что префикс базы данных (pdb_) не добавляется в предложение WHERE. Я могу вручную вставить префикс, добавив $this->db->dbprefix, но это не решает основную проблему.

Котировки

`pdb_comments`.`submittedby_id` = 'pdb_users.user_id'

Цитаты справа не являются точными и дают 0 результатов для меня. Есть ли способ заставить CodeIgniter распознавать вторую половину предложения where как часть моей таблицы; тем самым добавляя префикс базы данных и правильно расставляя кавычки, избегая двух объединений? Есть ли другой способ сделать это? Заранее спасибо.

-

Jon

Ответы [ 2 ]

3 голосов
/ 07 апреля 2009

Использование:

$this->db->select('comments.created_at, comments.section_id, comments.submittedby_id, users.username, comments.text, sections.name');
$this->db->from('comments');
$this->db->join('users', 'comments.submittedby_id=users.user_id'); 
$this->db->join('sections', 'comments.section_id=sections.id'); 
$this->db->order_by('comments.created_at', 'desc');
$query = $this->db->get();

вместо.

1 голос
/ 07 апреля 2009

Возможно, глупый вопрос, но почему бы вам просто не написать SQL напрямую? Интерфейс не выглядит так, как будто он дает вам ничего, кроме беспорядка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...