Kohana 3 ORM - группа в каждом конкретном случае
Я хотел бы выполнить этот запрос с помощью построителя запросов ORM:
SELECT * FROM `products`
GROUP BY CASE `products`.`configurable`
WHEN 'yes' THEN `products`.`id_configuration`
ELSE `products`.`id`
END
Я знаю, что это работает:
$products = DB::query(Database::SELECT, '
SELECT * FROM `products`
GROUP BY CASE `products`.`configurable`
WHEN 'yes' THEN `products`.`id_configuration`
ELSE `products`.`id`
END
')->execute();
Но он возвращает результат mysql db, и я предпочел бы иметь список ORM, в противном случае мне придется создавать все мои объекты ORM в цикле, что приводит к снижению производительности... или...?
Является ли это возможным? Функция ORM 'group_by' выглядит очень ограниченной...
1 ответ
Решение
Вы должны определить, какой тип результата БД вы хотите:
$products = DB::query(Database::SELECT, '
SELECT * FROM `products`
GROUP BY CASE `products`.`configurable`
WHEN 'yes' THEN `products`.`id_configuration`
ELSE `products`.`id`
END
')
->as_object('Model_Product') // !!
->execute();
Или, если вы используете его внутри модели, вы можете позвонить ->as_object(get_class($this))
или же ->as_object($this)
,