Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Freeman, спасибо в любом случае, вопрос уже решен... просто выспаться надо было...
А планируется переработка Laravel для возможности изменения ядра или это приницпиальное у разработчика (типа bcrypt'a)? Просто подумываю, может форкнуть...
То что код там более чем нормально написанный, это да, читается легко. А при помощи PHPStorm так вообще никаких проблем. Но вот задаю вопросы для того чтобы узнать "True Way". Т.е. те кто уже давно пишут на фреймворке те уже выработали какой-то набор правил, куда выносить "обертки", какие способы расширения...
Query, к сожалению, пришлось заменить в коде, так как там жестко прописано было use Laravel/Paginator, и неважно что было переназначено... Хотя я еще не разобрался с автозагрузкой, в теории может получится переназначить alias. Разбираю фреймворк на реальном проекте, и сроки немного поджимали, а от Codeigniter я чешусь уже...
Да мне и самому Framework понравился... Достаточно чистая структура, нет тесно интегрированных навесок типа как в Yii, быстрый, не глюкавит как FuelPHP, очень легкий старт (напоминает Codeigniter по этому пункту), ну и не такой грузивный как Symfony и Zend, единственный это Paginator, который в принципе перекрыл уже. Не хватает немного информации расширенной конечно по нему, но благодаря таким как Вы, получил ответы на все вопросы. Некоторые вопросы еще на IRC-канале также очень много людей.
Блин... дурдом... 5-ый раз изменяю эту запись... цирк...
Вобщем никак не получается выполнить такую последовательность:
Запрос 1:
SELECT COUNT(DISTINCT hash_code) AS `aggregate` FROM `cars`
Запрос 2:
SELECT
f1.hash_code, f1.field1, f1.field2
count(firm_code) as cntm, max(f1.price) as price_max, min(f1.price) as price_min
FROM
`cars` f1
GROUP BY f1.hash_code
ORDER BY cntm DESC
Т.е. насколько я понимаю все-таки группировку где-то надо убирать, но в этом случае, соответственно требуется уже не использовать функцию paginate, а генерировать линки вручную?
Ну или добавить в ядро "заплатку"... но как же я такие заплатки ненавижу... обновить потом ядро хрен выйдет. Надо расковырять как можно расширять ядро выносами.
public function paginate_with_group_by($per_page = 20, $columns = array('*'))
{
// Because some database engines may throw errors if we leave orderings
// on the query when retrieving the total number of records, we'll drop
// all of the ordreings and put them back on the query.
list($orderings, $this->orderings) = array($this->orderings, null);
$temp_distinct = $this->distinct;
$temp_groups = $this->groupings;
$this->distinct();
$this->groupings = null;
$total = $this->count(reset($columns));
$this->distinct = $temp_distinct;
$this->groupings = $temp_groups;
$page = Paginator::page($total, $per_page);
$this->orderings = $orderings;
// Now we're ready to get the actual pagination results from the table
// using the for_page and get methods. The "for_page" method provides
// a convenient way to set the paging limit and offset.
$results = $this->for_page($page, $per_page)->get($columns);
return Paginator::make($results, $total, $per_page);
}
Куда пиво/кофе/водку слать?.. ))
Блин, у меня тут крышу уносило уже, начал с JOIN и прочими вещами закапываться... А простое решение даже не попробовал... Чегой-то казалось что... вобщем ну его... пора спать
PS: одна только проблема еще осталась, попробую ее раскопать, но интересная...
При этом запросе данные соответственно передаются в $db->paginate, а уже Paginator штатный, делает первый запрос
SELECT COUNT(id) AS `aggregate` FROM `cars` GROUP BY hash_code
Как итог, получаем количество страниц равное 1. Если исключаем GROUP_BY, то соответственно все работает корректно... кроме самого запроса...
Добрый вечер уважаемое Сообщество.
Не спрашивайте зачем это надо, к сожалению, не всегда архитектура системы позволяет сделать по-человечески, и изредка приходится ставить "костыли"... Итак, есть примерно такая таблица (будем мучать как пример вечно запиленную автомобильную тему):
price_table
id, field1, field2, field3, price, id_firm, hash
Поле "hash" это уникальное поле, показывающее наличие одного и того же автомобиля у разных источников информации. Необходимо выбрать одну строку группируясь по хешу и указать количество одинаковых хешкодов существующих в разных источниках.
Запрос вот такой:
SELECT
p1.*,
(SELECT count(*) FROM price_table p2 WHERE p2.hash = p1.hash) as count_hash
FROM
price_table p1
WHERE ...
GROUP BY p1.hash
ORDER BY ...
LIMIT ...
OFFSET ...
все получается кроме вот только конструкции вложенного селекта этого... Подскажите возможно ли так сделать в Fluent Query или ставить RAW запрос полный и забить на внутренние эти всякие "вспомогалки"?