laravel搜索查询使用哈希字符的数字

时间:2015-03-26 07:26:28

标签: php laravel

我在下面有这个代码,搜索第一个字母被查询的标签,所以查询是这样的myurl.com/tags?alpha=E但是我想查询以数字开头的内容我怎么能查询数据库,当alpha可以使用哈希码#表示它是一个要查询的数字并返回以数字开头的标签,结帐我的代码

public function index()
{
    //
    $tags = null;

    if(Input::get('alpha') != null)
    {
        // alpha could be A,B,C,D,E etc
        $tags = Tag::where('name', 'Like', Input::get('alpha') . '%')->orderBy('name', 'asc')->paginate(40);
    }
    else
    {
        $tags = Tag::orderBy('name', 'asc')->paginate(40);  
    }

    return View::make('tags.index')->with(compact('tags'));
}

1 个答案:

答案 0 :(得分:1)

你可以这样做:

public function index() {
        $tags = null;
        $alpha = Input::get('alpha');
        if ( preg_match("/^[a-zA-Z]$/", $alpha) ) {
            $tags = Tag::where('name', 'Like', Input::get('alpha') . '%')->orderBy('name', 'asc')->paginate(40);
        } else if ( $alpha == "#" ) {
            $tags = Tag::whereRaw("name regexp '^[0-9]'")->orderBy('name', 'asc')->paginate(40);
        } else {
            $tags = Tag::orderBy('name', 'asc')->paginate(40);
        }

        return View::make('tags.index')->with(compact('tags'));
    }

请注意:要发送#字符,您必须使用'%23'对于alpha值而不是'#' (myurl.com/tags?alpha=%23)