Laravel 5.3 - как мне установить fetchmode в построителе запросов?

Я работаю с устаревшим кодом. Старый механизм отчетов использует ассоциативные массивы, построитель запросов Laravel возвращает массив объектов.

Мне нужно превратить объекты в массивы. Я пытался использовать:

\DB::connection('tars-test') //->setFetchMode(PDO::FETCH_ASSOC)

но это меня заводит Class 'App\Http\Controllers\PDO' not found

Было предложено поставить ->all() в конце запроса, но это выдает ошибку Call to a member function all() on array

Наиболее эффективным способом было бы установить режим выборки во время выполнения для устаревшей функции и только для устаревшей функции. Как мне это сделать?

2 ответа

Вы можете использовать метод toArray: https://laravel.com/docs/5.3/collections

Laravel 5.3 и ниже

Вы пошли правильным путем, но, как видите, laravel пытается найти PDO в App\Http\Controllers\PDO что, вероятно, означает, что вы забыли добавить use Illuminate\Database\PDO;

Laravel 5.4 и выше

Начиная с laravel 5.4 это не вариант. Но вы все равно можете установить режим выборки глобально: режим выборки Laravel 5.4 - Как установитьPDO?

Или, если вы все еще хотите изменить его локально:

Только возвращаемые значения (без ключей / ассоциативного массива) в Laravel

Другие вопросы по тегам