我正在尝试RTM,但无法查看列出可能的where
运算符列表的位置。我只看到>=
,<>
和like
的基本示例。无论如何,我想过滤掉任何匹配多种模式的结果。
如果我使用
->whereNotIn('fieldName', ['exactString1', 'exactString2'])
然后我从结果中过滤掉这些确切的字符串。但是我想过滤掉多个模式(NOT LIKE)而不是多个字符串。
模式生成动态,因此使用数组会更好。像
这样的东西->whereNotLike('fieldName', ['%string1%', '%string2%'])
我正在使用MySQL,所以我打开使用原始查询是查询构建器不支持这个。
所以,如果我有
的结果string1_abc
string2_abc
string3_abc
然后我会得到
string3_abc
返回。
我无法使用whitelist
,blacklist
模式是动态生成的。
答案 0 :(得分:2)
这是一个非常基本的示例,说明如何动态添加多个条件到现有查询:
$patterns = [
'field1' => ['pattern1', 'pattern2', 'pattern3'],
'field2' => ['pattern4', 'pattern5'],
];
$query = MyModel::where('x', 'y'); // just an example of a query builder instance
foreach ($patterns as $field => $pattern) {
$query->where($field, 'not like', '%'.$pattern.'%');
}
return $query->get();
显然在你的应用程序中看起来并不像这样,但希望你能得到这个想法。 :)
请注意,您不必执行$query = $query->where(...);
,因为您正在转换现有查询而不是创建新查询。
答案 1 :(得分:1)
您可以使用value
,例如:
'not like'