Laravel 4/5搜索表单像

Laravel 4/5搜索表单像

问题描述:

我有一个搜索表单和函数,全部完成。只是要问,是否可以在Eloquent这样的查询中进行:Laravel 4/5搜索表单像

SELECT * FROM players WHERE name LIKE '%".$name."%' 

要显示一些可能的匹配名称。我现在的控制器功能:

public function search() 
{ 
    $name = Input::get('character'); 
    $searchResult = Player::where('name', '=', $name)->paginate(1); 
    return View::make('search.search') 
      ->with('name', $name) 
      ->with('searchResult', $searchResult); 
} 

而我的观点:

<form id="custom-search-form" class="form-search form-horizontal pull-right" action="{{ URL::action('[email protected]') }}" method="get"> 
    <div class="input-append spancustom"> 
     <input type="text" class="search-query" name="character" placeholder="Character/guild name"> 
     <button type="submit" class="btn"><i class="icon-search"></i></button> 
    </div> 
</form> 

在此先感谢。

嗯,是的,只需设置like作为您的比较运算符,并发送字符串%的。类似这样的:

Player::where('name', 'LIKE', "%$name%")->get(); 
+0

谢谢,内华达州呃真的用LIKE查询做了一些事情。我怎么能得到匹配的结果?我已经有一个搜索表单设置,但不知道如何查看匹配结果?你能帮我一下吗? http://paste.laravel.com/K9O –

+2

您可以查看如何在[Laravel文档](http://laravel.com/docs/pagination#usage)上显示分页结果。另外,我建议你缩进你的视图代码,它几乎不可读。 – rmobis

+1

这也帮助我与我的jquery自动完成的情况下。 –

如果您需要频繁使用LIKE,那么您可以简化问题。

public function scopeLike($query, $field, $value){ 
     return $query->where($field, 'LIKE', "%$value%"); 
} 

,那么你可以这样的方式使用此方法:如自定义()方法可以在继承了雄辩的模型来创建

User::like('name', 'Tomas')->get(); 
+0

我会在哪里放置函数'scopeLike'?哪个档案? –

+1

@JoshPetitt,你需要把这个方法放入你的模型中,框架会自动地看到它。 (这里是文档 - https://laravel.com/docs/5.4/eloquent#query-scopes查看本地范围) – Kison

随着字符串的报价:

$value = DB::connection()->getPdo()->quote('%' . strtolower($value) . '%'); 
$query->whereRaw('LOWER(your_table.your_column) LIKE ' . $value); 

public function get_student($match){ 
    return Student::where('name', 'like', $match .'%'); 
} 

试试上面的