如何将in_array与Laravel QueryBuilder输出一起使用


How do I use in_array with Laravel QueryBuilder output?

当我使用laravel的DB查询生成器时,它会返回一个数组,如:

array(20421) {
  [0] =>
  class stdClass#887 (2) {
    public $color =>
    int(1)
    public $size =>
    string(6) "141793"
  }

我很乐意使用Laravel系列,但这不是一个系列,因为我没有使用雄辩(在这种情况下我不想这样)。我的问题是,我如何检查这个颜色=3、大小=123的数组中是否存在记录?

您可以将结果包装在Laravel集合中,并像习惯的那样使用它:

$result = DB::table('...')->get();
$collection = new 'Illuminate'Support'Collection($result);
$exists = $collection->contains(function($key, $value){
    return $value->color == 3;
});

如果您必须担心性能问题,您可能需要使用此选项,不过
(或者甚至可以运行数据库查询?)

$exists = ! is_null(array_first($array, function($key, $value){
    return $value->color == 3;
}));

集合内部也使用array_first(它只是在数组上循环,直到找到匹配项),但如果没有集合,您应该能够稍微提高性能。然而,我不知道它是否会引人注目。