在Laravel中使用Eloquent ORM来使用LIKE来执行数据库search

我想使用Eloquent的活动loggingbuild立一个search查询,但它将是一个LIKEsearch。 我find了User::find($term)User::find(1) ,但是这不会生成一个类似的语句。 我不是在寻找一个直接的答案,但是如果有人能够至less给我一个方向来看看这将是伟大的!

你可以用这个语法来使用LIKE来查找数据库:

 Model::where('column', 'LIKE', '%value%')->get(); 

如果你需要经常使用LIKE,你可以简化一下这个问题。 像()这样的自定义方法可以在inheritanceEloquent ORM的模型中创build:

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

那么你可以这样使用这个方法:

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

仅供参考,运营商名单(包括类似和所有其他)在代码中:

 /vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php protected $operators = array( '=', '<', '>', '<=', '>=', '<>', '!=', 'like', 'not like', 'between', 'ilike', '&', '|', '^', '<<', '>>', 'rlike', 'regexp', 'not regexp', ); 

免责声明:

乔尔·拉森的答案是正确的。 得到我的赞成。

我希望这个答案能够通过雄辩的ORM揭示更多的东西( 直接点人 )。 虽然链接到文档将会好得多,但是这个链接已经被certificate是难以捉摸的。

使用双引号而不是单引号例如:

 where('customer.name', 'LIKE', "%$findcustomer%") 

以下是我的代码:

 public function searchCustomer($findcustomer) { $customer = DB::table('customer') ->where('customer.name', 'LIKE', "%$findcustomer%") ->orWhere('customer.phone', 'LIKE', "%$findcustomer%") ->get(); return View::make("your view here"); } 

如果你不喜欢像我这样的双引号,这将适用于你单引号:

 $value = Input::get('q'); $books = Book::where('name', 'LIKE', '%' . $value . '%')->limit(25)->get(); return view('pages/search/index', compact('books'));