addPostName(); $this->addCustomerName(); $this->addExpressionFieldToSelect( 'mp_created_at', 'main_table.created_at', ['mp_created_at' => 'created_at'] ); return $this; } /** * @param string $field * @param string $direction * * @return SearchResult */ public function setOrder($field, $direction = self::SORT_ORDER_DESC) { switch ($field) { case 'customer_name': return parent::setOrder('user_name', $direction); case 'mp_created_at': return parent::setOrder('main_table.created_at', $direction); } return parent::setOrder($field, $direction); } /** * @param array|string $field * @param null $condition * * @return SearchResult */ public function addFieldToFilter($field, $condition = null) { if ($field === 'customer_name') { return parent::addFieldToFilter('user_name', $condition); } if ($field === 'post_name') { $field = 'mp.name'; } elseif ($field === 'mp_created_at') { $field = 'main_table.created_at'; } return parent::addFieldToFilter($field, $condition); } /** * @return $this */ public function addPostName() { $this->getSelect()->joinLeft( ['mp' => $this->getTable('mageplaza_blog_post')], 'main_table.post_id = mp.post_id', ['post_name' => 'name'] ); return $this; } /** * @return $this */ public function addCustomerName() { $this->getSelect()->joinLeft( ['ce' => $this->getTable('customer_entity')], 'main_table.entity_id = ce.entity_id', ['firstname', 'lastname'] )->columns([ 'customer_name' => new Zend_Db_Expr("CONCAT(`ce`.`firstname`,' ',`ce`.`lastname`)") ]); return $this; } }