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