我在计算guid
不为空的设备数量时遇到问题。
需要按用户user_id
获取所有商店,然后计算guid
不为空的所有设备。
$shops = Shop::with('devices')->where('user_id', $userId)->get();
$deviceActive = $shops->reduce(function ($carry, $item) {
return $carry + $item->devices->whereNotNull('guid')->count();
});
dd($deviceActive );
当我这样做时,它会起作用:
return $carry + $item->devices->count();
但需要计算guid
不为空的位置。
我也很想知道是否有其他reduce
方法。
答案 0 :(得分:1)
由于$item->devices
是一个集合,因此集合没有whereNotNull()
。因此,请尝试使用where()
:
$item->devices->where('guid', '<>', null)->count();
答案 1 :(得分:0)
尝试:
$shops = Shop::with('devices')
->where('user_id', $userId)
->where('guid', '!=', null)->get();
$get_count = count($shops); // it return how many values have $shops
OR
$shops= DB::table('devices')->where('user_id', $userId)
->where('guid', '!=', null)->get();
$get_count = count($shops);
如果您没有在控制器上添加类DB:
use DB;