Laravel where在查询中找不到列表值?

时间:2017-06-02 07:42:54

标签: php laravel eloquent laravel-5.3

在构建查询以从模型中查找多个值时,eloquent看起来像这样:

return Contact::whereIn('user_name', explode(',', $userNames)

但是让我们说userNames的值是['foo', 'bar'];,但我只有foo作为有效的用户名,有没有办法获得bar(所有都未能find)out作为同一查询的一部分,而不必将结果->get()与请求进行比较?

2 个答案:

答案 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);