Collection.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. /**
  7. * Report Reviews collection
  8. *
  9. * @author Magento Core Team <core@magentocommerce.com>
  10. */
  11. namespace Magento\Reports\Model\ResourceModel\Review;
  12. /**
  13. * @api
  14. * @since 100.0.2
  15. */
  16. class Collection extends \Magento\Review\Model\ResourceModel\Review\Collection
  17. {
  18. /**
  19. * Resource initialization
  20. *
  21. * @return void
  22. */
  23. protected function _construct()
  24. {
  25. $this->_init(\Magento\Review\Model\Review::class, \Magento\Review\Model\ResourceModel\Review::class);
  26. }
  27. /**
  28. * Add product filter
  29. *
  30. * @param string $productId
  31. * @return $this
  32. */
  33. public function addProductFilter($productId)
  34. {
  35. $this->addFieldToFilter('entity_pk_value', ['eq' => (int)$productId]);
  36. return $this;
  37. }
  38. /**
  39. * Reset select
  40. *
  41. * @return $this
  42. */
  43. public function resetSelect()
  44. {
  45. parent::resetSelect();
  46. $this->_joinFields();
  47. return $this;
  48. }
  49. /**
  50. * Get select count sql
  51. *
  52. * @return string
  53. */
  54. public function getSelectCountSql()
  55. {
  56. $countSelect = clone $this->_select;
  57. $countSelect->reset(\Magento\Framework\DB\Select::ORDER);
  58. $countSelect->reset(\Magento\Framework\DB\Select::LIMIT_COUNT);
  59. $countSelect->reset(\Magento\Framework\DB\Select::LIMIT_OFFSET);
  60. $countSelect->reset(\Magento\Framework\DB\Select::COLUMNS);
  61. $countSelect->columns("COUNT(main_table.review_id)");
  62. return $countSelect;
  63. }
  64. /**
  65. * Set order
  66. *
  67. * @param string $attribute
  68. * @param string $dir
  69. * @return $this
  70. */
  71. public function setOrder($attribute, $dir = self::SORT_ORDER_DESC)
  72. {
  73. if (in_array($attribute, ['nickname', 'title', 'detail', 'created_at'])) {
  74. $this->_select->order($attribute . ' ' . $dir);
  75. } else {
  76. parent::setOrder($attribute, $dir);
  77. }
  78. return $this;
  79. }
  80. }