SELECT * FROM `table` WHERE
(`name` LIKE '$search'
OR `address` LIKE '$search'
OR `name` LIKE '$search%'
OR `address` LIKE '$search%'
OR `name` LIKE '%$search%'
OR `address` LIKE '%$search%'
OR `name` like '%$search'
OR `address` like '%$search')
order by
( (CASE WHEN `name` = '$search' THEN 1 ELSE 0 END)
+ (CASE WHEN `address` = '$search' THEN 1 ELSE 0 END)
+ (CASE WHEN `name` LIKE '$search%' THEN 1 ELSE 0 END)
+ (CASE WHEN `address` LIKE '$search%' THEN 1 ELSE 0 END)
+ (CASE WHEN `name` LIKE '%$search%' THEN 1 ELSE 0 END)
+ (CASE WHEN `address` LIKE '%$search%' THEN 1 ELSE 0 END)
+ (CASE WHEN `name` LIKE '%$search' THEN 1 ELSE 0 END)
+ (CASE WHEN `address` LIKE '%$search' THEN 1 ELSE 0 END))
これらを Magento で検索カスタム Modul で実行したいので、 を配置しようとしました$query->read(".....")
が、ページネーションで問題が発生しsetCollection()
ます。これまでのところ、次のコードを使用しています。
public function __construct()
{
parent::__construct();
$search = Mage::app()->getRequest()->getParam("search");
$collection = Mage::getModel('search/search')->getCollection()
->addFieldToFilter('name',array("like"=>"%$search%"));
$this->setCollection($collection);
}
// next is for pagination
protected function _prepareLayout()
{
parent::_prepareLayout();
$pager = $this->getLayout()->createBlock('page/html_pager', 'custom.pager');
$pager->setAvailableLimit(array(20=>20,25=>25,30=>30));
$pager->**setCollection**($this->getCollection()); // this create probleme whit read()
$this->setChild('pager', $pager);
$this->getCollection()->load();
return $this;
}
public function getPagerHtml()
{
return $this->getChildHtml('pager');
}
Magentoの機能が使えるようになればいいのですが。