无字母搜索元素


Aphabetical search element

我有一个搜索字段,但总是当我搜索一个名字时,它总是从顶部开始,我怎么能确保它是无字母的,根据用户输入的第一个字母。下面是我的模型代码

public function getName($id)
    {
        $select = $this ->select()
                        ->where('service_provider_id  = ?', $id)
                        ->order('service_provider_name ASC')
                        ->limit(20);
        return $this->fetchRow($select);
    }

try this:

    $select = $this ->select()
                    ->where('service_provider_id  = ?', $id)
                    ->where('service_provider_name LIKE ''%' . $first_letter . '''')
                    ->order('service_provider_name ASC')
                    ->limit(20);

在SQL中,可以这样做:

order by (case when service_provider_name >= 'F' then 0 else 1 end),
         service_provider_name

你应该在'F'的位置写上合适的字母。

这是标准的SQL,应该在所有引擎上运行。也许同样的方法也适用于Zend框架。

如果我理解正确的话,您正在按名称搜索。因此,您需要相应地更改代码。你想要实现的和模型中的函数不是内联的。例如,return $this->fetchRow($select);将返回表中唯一匹配的原始数据,您再次执行->limit(20),您在这里限制了什么。函数的结果将始终是1 raw或none, order也是如此。我认为你想要按名字搜索考虑到第一个输入字母和顺序的结果,限制为20。试着把你的方法改成这样:-

public function searchByName() 
{
  $select = $this ->select();  
  $select    ->where('service_provider_name LIKE ?', '%'.$service_provider_name)
             ->order('service_provider_name ASC')
              ->limit(0,20);

        return $this->fetchAll($select);
}