从其他 table 算起

Count from other table

我在计算 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 方法。

由于 $item->devices 是一个集合,因此没有 whereNotNull() 集合。所以尝试使用 where():

$item->devices->where('guid', '<>', null)->count();

尝试:

$shops = Shop::with('devices')
->where('user_id', $userId)
->where('guid', '!=', null)->get();

$get_count = count($shops); // it return how many values have $shops

$shops= DB::table('devices')->where('user_id', $userId)
    ->where('guid', '!=', null)->get();

$get_count = count($shops);

如果您的控制器没有 class 数据库添加:

use DB;