Посчитай из другой таблицы

У меня проблема с подсчетом количества устройств, на которых 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 подход.

1

Решение

поскольку $item->devices коллекции нет whereNotNull() для коллекций. Так что попробуйте использовать where():

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

Другие решения

Пытаться:

$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);

если у вас нет класса DB, добавленного на вашем контроллере:

use DB;
0

По вопросам рекламы [email protected]