Files
esun3d/app/code/Mageplaza/Blog/Model/ResourceModel/Topic/Collection.php
T
2026-09-15 10:35:56 +08:00

126 lines
2.9 KiB
PHP
Executable File

<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Blog
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Blog\Model\ResourceModel\Topic;
use Magento\Framework\DB\Select;
use Magento\Sales\Model\ResourceModel\Collection\AbstractCollection;
use Mageplaza\Blog\Api\Data\SearchResult\TopicSearchResultInterface;
use Mageplaza\Blog\Model\Topic;
use Mageplaza\Blog\Model\ResourceModel\Topic as TopicResourceModel;
/**
* Class Collection
* @package Mageplaza\Blog\Model\ResourceModel\Topic
*/
class Collection extends AbstractCollection implements TopicSearchResultInterface
{
/**
* ID Field Name
*
* @var string
*/
protected $_idFieldName = 'topic_id';
/**
* Event prefix
*
* @var string
*/
protected $_eventPrefix = 'mageplaza_blog_topic_collection';
/**
* Event object
*
* @var string
*/
protected $_eventObject = 'topic_collection';
/**
* Define resource model
*
* @return void
*/
protected function _construct()
{
$this->_init(Topic::class, TopicResourceModel::class);
}
/**
* Get SQL for get record count.
* Extra GROUP BY strip added.
*
* @return Select
*/
public function getSelectCountSql()
{
$countSelect = parent::getSelectCountSql();
$countSelect->reset(Select::GROUP);
return $countSelect;
}
/**
* @param null $valueField
* @param string $labelField
* @param array $additional
*
* @return array
*/
protected function _toOptionArray($valueField = null, $labelField = 'name', $additional = [])
{
$valueField = 'topic_id';
return parent::_toOptionArray($valueField, $labelField, $additional); // TODO: Change the autogenerated stub
}
/**
* @param mixed $topicIds
*
* @return $this
*/
public function addIdFilter($topicIds)
{
$condition = '';
if (is_array($topicIds)) {
if (!empty($topicIds)) {
$condition = ['in' => $topicIds];
}
} elseif (is_numeric($topicIds)) {
$condition = $topicIds;
} elseif (is_string($topicIds)) {
$ids = explode(',', $topicIds);
if (empty($ids)) {
$condition = $topicIds;
} else {
$condition = ['in' => $ids];
}
}
if ($condition) {
$this->addFieldToFilter('topic_id', $condition);
}
return $this;
}
}