Я очень новичок в Eloquent Я потратил часы на поиск, и я не могу найти точное решение моей проблемы.PHP/Eloquent - Итерация через коллекцию и заданную переменную не в области
У меня есть следующие модели:
use Illuminate\Database\Eloquent\Model as Eloquent;
use Illuminate\Support\Collection;
class Answer extends Eloquent
{
protected $table = 'tbl_answers';
protected $fillable = [
'method',
'thoughts',
'location'
];
public function getMethodsStats()
{
$methods = Answer::selectRaw('*, count(*) AS method_count')- >groupBy('method');
return $methods;
}
}
В моем контроллере, я пытаюсь перебирать результаты просто повторяют результаты на экран. Это работает:
$methods = $app->answer->getMethodsStats();
$methods->each(function($method, $key)
{
echo " --- Method: " . $method->method . " - " . $method->method_count;
});
Выход, как и ожидалось:
- метод: раз - 3 --- Метод: мнут - 2
Чтобы сделать вещи проще, я хотите заполнить массив этими значениями. Этот массив должен быть доступен вне функции «каждый», как только это будет сделано.
Код:
$methods = $app->answer->getMethodsStats();
$stats = new array();
$methods->each(function($method, $key) use ($stats)
{
$stats[$method->method] = $method->method_count;
});
echo json_encode($stats);
Это не работает, как я предполагал. Я просто получаю пустой массив.
Выход:
[]
Я знаю, что я что-то отсутствует основной, но 'что', то есть я не знаю.
Ты, мой друг, абсолютная звезда! Спасибо за это. Решила мою проблему сразу (и я кое-что узнал от нее!) Большое спасибо! – Techedemic
Рад, что это помогло! @Techedemic. Собственно, я тоже узнал что-то новое. – shalvah