如何将in_array与Laravel Query Builder输出一起使用?

时间:2015-02-27 21:38:54

标签: php laravel laravel-4

当我使用laravel的数据库查询构建器时,它返回一个如下数组:

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

我很乐意使用Laravel系列,但这不是一个集合,因为我没有使用雄辩(并且不想在这种情况下)。我的问题是,如何查看此数组中是否存在color = 3和size = 123的记录?

1 个答案:

答案 0 :(得分:1)

您可以将结果包装在Laravel集合中,并像以前一样使用它:

$result = DB::table('...')->get();
$collection = new \Illuminate\Support\Collection($result);

$exists = $collection->contains(function($key, $value){
    return $value->color == 3;
});

如果你不得不担心性能,你可能想要使用它而不是 (或者甚至可能改为运行db查询?)

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

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