在构建查询以从模型中查找多个值时,eloquent看起来像这样:
return Contact::whereIn('user_name', explode(',', $userNames)
但是让我们说userNames
的值是['foo', 'bar'];
,但我只有foo
作为有效的用户名,有没有办法获得bar
(所有都未能find)out作为同一查询的一部分,而不必将结果->get()
与请求进行比较?
答案 0 :(得分:0)
您可以使用数组diff从选区域中删除无效值,并丢失->get()
以获得结果;
return Contact::whereIn('user_name', array_diff(explode(',', $userNames, ['bar']))->get()
答案 1 :(得分:0)
无法让查询返回给定条件中不存在的用户名列表。但你可以这样做。
UnaryOperator<String> operator = t -> {
String ipPatt = "(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
Pattern pattern = Pattern.compile(ipPatt );
Matcher matcher = pattern.matcher(t);
if (matcher.find()) {
return matcher.group();
} else {
return "0.0.0.0";
}
};
List<String> myFilteredList = myList.stream().filter(predicate).collect(Collectors.toList());
myFilteredList.replaceAll(operator);