Хотел бы вывести небольшой перечень случайных комментариев к товарам в макете страницы.
Для этого делаю вот что.
// Комментарии о товарах на главной странице
$oShop = Core_Entity::factory('Shop', $id );
$Shop_Controller_Show = new Shop_Controller_Show( $oShop );
$oShop = $Shop_Controller_Show->getEntity();
$oComment = Core_Entity::factory( 'Comment' );
$oComment->queryBuilder()
->select( 'comments.*' )
->join( 'comment_shop_items', 'comment_shop_items.comment_id', '=', 'comments.id' )
->join( 'shop_items', 'comment_shop_items.shop_item_id', '=', 'shop_items.id' )
->where( 'shop_items.shop_id', '=', 4 )
->where('shop_items.deleted', '=', 0)
->where('comments.deleted', '=', 0 )
->orderBy( 'RAND()' )
->limit(3);
$aShop_Item_Comment = $oComment->findAll(FALSE);
$Shop_Controller_Show->addEntities( $aShop_Item_Comment )
->xsl(
Core_Entity::factory('Xsl')->getByName( $xslName )
)
->show();
Это всё добавляет в XML лишь три элемента
comment, в которых нет информации о товарах.
Я хотел бы добавить туда еще и информацию о товаре, к которому комментарий был оставлен. Если я в консоли MySQL пишу такой запрос:
SELECT
`comments`.*, `shop_items`.`name` AS `shop_item_name`, `shop_items`.`path` AS `shop_item_path`
FROM `comments`
INNER JOIN `comment_shop_items` ON `comment_shop_items`.`comment_id` = `comments`.`id`
INNER JOIN `shop_items` ON `comment_shop_items`.`shop_item_id` = `shop_items`.`id`
WHERE `shop_items`.`shop_id` = 4 AND `shop_items`.`deleted` = 0 AND `comments`.`deleted` = 0 AND `comments`.`deleted` = 0
ORDER BY RAND() ASC
LIMIT 3
, то получаю результирующую таблицу с нужными мне полями. Но я не могу понять, как именно мне нужно использовать
queryBuilder(), чтобы получить этот же результат.
И достаточно ли будет метода
addEntities(), чтобы в XML в поля
comment попали еще и данные о товарах? Подскажите, пожалуйста.