我想使用 Eloquent 的主动记录构建来构建搜索查询,但这将是一个 LIKE 搜索。我找到了User::find($term)
or User::find(1)
,但这并没有生成类似的声明。我不是在寻找直接的答案,但如果有人至少能给我一个方向,那就太好了!
问问题
142108 次
5 回答
242
您可以使用 LIKE 使用以下语法进行数据库查找:
Model::where('column', 'LIKE', '%value%')->get();
于 2012-11-14T20:39:14.407 回答
65
如果需要经常使用LIKE,可以稍微简化一下问题。可以在继承 Eloquent ORM 的模型中创建像 () 这样的自定义方法:
public function scopeLike($query, $field, $value){
return $query->where($field, 'LIKE', "%$value%");
}
那么你可以这样使用这个方法:
User::like('name', 'Tomas')->get();
于 2014-10-19T16:54:34.467 回答
29
仅供参考,运算符列表(包含like和所有其他)在代码中:
/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
protected $operators = array(
'=', '<', '>', '<=', '>=', '<>', '!=',
'like', 'not like', 'between', 'ilike',
'&', '|', '^', '<<', '>>',
'rlike', 'regexp', 'not regexp',
);
免责声明:
Joel Larson 的回答是正确的。得到了我的支持。
我希望这个答案能更清楚地说明通过 Eloquent ORM 可用的内容(指向正确的人)。虽然指向文档的链接会好得多,但该链接已被证明是难以捉摸的。
于 2014-11-13T06:00:42.033 回答
18
使用双引号而不是单引号,例如:
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");
}
于 2014-12-19T02:18:14.333 回答
3
如果您不喜欢像我这样的双引号,这将适用于单引号:
$value = Input::get('q');
$books = Book::where('name', 'LIKE', '%' . $value . '%')->limit(25)->get();
return view('pages/search/index', compact('books'));
于 2017-05-30T21:44:13.763 回答