2016-11-04 2 views
1

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

Try:

$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

Это вернет количество магазинов, а не устройств. –

Смежные вопросы