关于php:如何在Laravel查询生成器输出中使用in_array?

How do I use in_array with Laravel QueryBuilder output?

当我使用laravel的数据库查询生成器时,它返回如下数组:

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

我对使用Laravel集合感到很舒服,但这不是一个集合,因为我使用的不是雄辩的(并且不想在这种情况下使用)。我的问题是,如何检查该数组中是否有一条记录,其中color = 3和size = 123?


您可以将结果package在Laravel集合中,然后像习惯那样使用它:

1
2
3
4
5
6
$result = DB::table('...')->get();
$collection = new \\Illuminate\\Support\\Collection($result);

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

如果您担心性能,可以改用它
(或者甚至可以运行数据库查询?)

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

该集合在内部也使用array_first(它仅循环遍历该数组直到找到匹配项),但是没有该集合,您应该可以稍微提高性能。但是,我无法确定它是否会引起注意。