Итак, я использую следующее:
$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;
И у меня выводится только последняя (пятая) запись, а нет ipcount
отражается.
Есть ли другой способ обойти это? Я работаю над изучением DataMapper (отсюда и вопросы) и мне нужно разобраться с этим. Я не совсем обернул голову вокруг всего ORM.
Есть ли способ установить count(*) as ipcount
без забавного оператора select()
? Я не думаю, что это вызывает по какой-то причине. Это также может быть ошибкой в DataMapper, но я менее уверен в этом.
Также я обнаружил, что даже если я использую метод $r->query()
, он не возвращает ничего, кроме последней записи, если я использую что-то вроде SELECT
ip FROM
soapi WHERE 1;
. Однако он вернет все (как и должно быть), если я скажу SELECT * FROM soapi WHERE 1;
. Если он не имеет *
, он возвращает только последнюю строку.
Только что подтверждено новым запросом, все, кроме выбора всех столбцов (*
), возвращает только последнюю запись. Любая помощь с этим была бы великолепна. Вы можете создать утверждение типа select *, count(*) as ipcount
, но тогда у вас все равно не будет доступа к нему через $record->ipcount
.