【发布时间】:2010-04-29 02:48:15
【问题描述】:
所以我正在使用以下内容:
$r = new Record();
$r->select('ip, count(*) as ipcount');
$r->group_by('ip');
$r->order_by('ipcount', 'desc');
$r->limit(5);
$r->get();
foreach($r->all as $record)
{
echo($record->ip." ");
echo($record->ipcount." <br />");
}
标准:
SELECT `ip`, count(*) as ipcount FROM (`soapi`) GROUP BY `ip` ORDER BY `ipcount` desc LIMIT 5;
我只得到了最后(第五个)记录的回显,no ipcount 回显。
有没有其他方法可以解决这个问题?我正在学习 DataMapper(因此有问题),需要弄清楚其中的一些。我还没有完全理解整个 ORM 的事情。
有没有办法在没有有趣的select() 语句的情况下设置count(*) as ipcount?我不认为它是出于某种原因触发的。这也可能是 DataMapper 中的一个错误,但我不太确定。
我还发现,即使我使用$r->query() 方法,如果我使用SELECTipFROMsoapiWHERE 1; 之类的东西,除了最后一个条目之外,它不会返回任何内容。但是,如果我说SELECT * FROM soapi WHERE 1;,它将返回所有内容(就像它应该返回的那样)。如果它没有 * 它只返回最后一行。
刚刚使用新查询进行了验证,除了选择所有列 (*) 之外的任何内容都只返回最后一条记录。对此的任何帮助都会很棒。您可以制作像 select *, count(*) as ipcount 这样的声明,但您仍然无法通过 $record->ipcount 访问它。
【问题讨论】:
-
你怎么知道这是第五条记录?您能否以标准 SQL 格式发布您的查询?
-
添加了标准格式,我知道这是第五个,因为如果我通过输出运行标准查询,则与查询结果的最后一个条目相同。
标签: php mysql codeigniter codeigniter-datamapper