Результаты потоковой передачи Laravel Лениво

#php #laravel

Вопрос:

Я пытаюсь воспроизвести довольно простой фрагмент из https://laravel.com/docs/8.x/eloquent#streaming-results-lazily

 use AppModelsFlight;

foreach (Flight::lazy() as $flight) {
    //
}
 

Но я получаю Call to undefined method AppModelsFlight::lazy() ошибку, и я просто не могу понять, почему. Спасибо за совет.

Комментарии:

1. какая версия laravel.проверьте файл композитора на наличие точной версии laravel/framework

2. Вы, вероятно, ищете foreach(Flight::cursor() as $flight) : laravel.com/docs/8.x/eloquent#cursors . Кроме того, убедитесь, что вы используете Laravel 8; lazy() был представлен в 8.x предыдущих версиях и недоступен в них.

3. Курсор @TimLewis не может быстро загружать отношения, так что это не то, что я ищу.

4. Хотя это справедливая точка зрения, ваш вопрос в том виде, в каком он написан, не имеет ничего общего с интенсивной загрузкой отношений; Flight::lazy() не выполняет интенсивную загрузку отношений и недоступен, поэтому я связал лучшую доступную функцию для вашей версии Laravel.

Ответ №1:

Я думаю lazy() , что метод добавлен в версию laravel v8.34.0 .Даже если вы используете Laravel 8 , убедитесь, что это должна быть хотя бы версия v8.34.0

В соответствии с примечанием к выпуску платформы Laravel.

 Added lazy() and lazyById() methods to IlluminateDatabaseConcernsBuildsQueries
 

Ссылка:https://github.com/laravel/framework/releases/tag/v8.34.0 Ссылка:https://github.com/laravel/framework/pull/36699

введите описание изображения здесь

Комментарии:

1. В настоящее время моя версия 8.20.1, так что вы правы. Спасибо 🙂