我在下面有这个代码,搜索第一个字母被查询的标签,所以查询是这样的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'));
}
答案 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)