1

在 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 请求

选择pdb_commentscreated_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_commentssubmittedby_id= 'users.user_id' 和 pdb_comments. section_id= 'sections.id' ORDER BY pdb_commentscreated_at描述限制 10

问题是pdb_没有在WHERE子句中添加数据库前缀 ( )。我可以通过附加手动插入前缀$this->db->dbprefix,但这并不能解决主要问题。

行情

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

右侧的报价不准确,为我生成 0 个结果。有什么方法可以让 CodeIgniter 将 where 子句的后半部分识别为我的表的一部分;从而添加数据库前缀,并通过避免两个连接正确放置引号?还有另一种方法可以做到这一点吗?提前致谢。

--

乔恩

4

2 回答 2

3

采用:

$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();

反而。

于 2009-04-07T19:15:22.463 回答
1

可能是个愚蠢的问题,但你为什么不直接写 SQL 呢?界面看起来除了杂乱之外没有给你任何东西。

于 2009-04-07T18:37:01.027 回答