在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'));