Я думаю, что проблема в этой строке
$descargadas[] = Promociones::where('user_id',$key)->count();
, поскольку вы ищите только user_id, который соответствует индексу массива !!
это должно быть похоже на
$descargadas[] = Promociones::where('user_id',$val)->count();
или
$descargadas[] = Promociones::where('user_id',$val->id)->count();
, и даже если эта работа не является лучшим способом, худшее, что нужно сделать, это выполнить запрос базы данных в цикле, что ужасно
, еслиданные не так уж велики, вы можете сделать что-то подобное перед foreach
$promociones = collect(Promociones::all()->toArray());
, это извлечет модель из коллекции, тогда любое условие where будет искать в коллекции и не будет требовать запроса к базе данных для каждого.время.
$promociones = collect(Promociones::all()->toArray());
foreach ($nombres as $key => $val)
{
$promociones[] = $val;
$descargadas[] = $promociones->where('user_id',$val->any_filed)->count();
}