nie*_*ano 6 php activerecord codeigniter
我试图绕过这个,但我似乎是围成一圈.我正在尝试逐个列出用户主题,下面是属于该特定主题的引号.如果这是有道理的.
我有3个表,如下所示:
[USERS] user_id用户名
[TOPICS] topic_id user_id topic_name
[QUOTES] quote_id topic_id quote_name
我希望能够在我看来做这样的事情:
用户名:托马斯
主题1:无论如何
行情:一个引用,另一个引用和第三个引用,都属于主题1.
主题2:托马斯的另一个话题
行情:是的,好的,谢谢,我喜欢Stack Overflow,这些引用属于主题2.
但我不能让它工作,我一直在尝试一切,包括奇怪的东西,如:
public function get_quotes()
{
$this->db->select('*');
$this->db->from('topics');
$this->db->join('quotes', 'topic_id = quote_id');
$query = $this->db->get();
if($query->num_rows() > 0)
{
foreach ($query->result() as $row) {
$data[] = $row;
}
}
return $data;
}
Run Code Online (Sandbox Code Playgroud)
这有点奇怪吗,我应该尝试使用'where'代替吗?就像是:
$this->db->where('user', $user_id);
$this->db->where('topic', $topic_id);
$this->db->where('quote', $quote_id);
Run Code Online (Sandbox Code Playgroud)
我真的很感激我能得到的任何帮助,或只是一个手指指向正确的方向!
Jak*_*kub 10
马上我会问"什么不起作用?" ,其次,我建议您运行探查器,以显示正在生成的EXACT SQL,以便您可以有效评估ACTIVE QUERY失败的位置.
要使用分析器,请将其粘贴到控制器中:
$this->output->enable_profiler(TRUE);
Run Code Online (Sandbox Code Playgroud)
它将导致所有数据库调用,所有POST变量等的良好输出;
参考此处:http://codeigniter.com/user_guide/libraries/output.html
UPDATE
因此,要完全执行您想要的操作,您需要一个返回以下列的查询:
user_id, username, topic_id, topic_name, quote_id, quote_name
Run Code Online (Sandbox Code Playgroud)
这是您想要的活动查询(如果足够清楚,您还可以使用方法链接):
$this->db->select('u.user_id, u.username, t.topic_id, t.topic_name, q.quote_id, q.quote_name');
$this->db->from('users u');
$this->db->join('topics t', 't.user_id = u.user_id'); // this joins the user table to topics
$this->db->join('quotes q', 'q.topic_id = t.topic_id'); // this joins the quote table to the topics table
$query = $this->db->get();
Run Code Online (Sandbox Code Playgroud)
您的结果集将类似于:
user_id | username | topic_id | topic_name | quote_id | quote_name
1 |Thomas |1 |Whatever |1 |One quote, anot...
2 |Ryan |4 |Another... |6 |To be or not to...
Run Code Online (Sandbox Code Playgroud)
一旦你有了这个结果集,只需循环遍历数据输出它,并检查你是否有来自同一个人的多个引号(比如按user_id排序,如果它是同一个人,则在第二个循环上进行测试,否则输出新用户名).
| 归档时间: |
|
| 查看次数: |
16200 次 |
| 最近记录: |