Eloquent возвращает данные MS SQL в виде строк, а не их соответствующие типы данных. - PullRequest
3 голосов
/ 17 апреля 2020

Что я использую

  • PHP 7.3.8
  • MS SQL Сервер 2016
  • SQLSRV 5.8.1
  • Laravel 5.8.23
  • ODB C Драйвер 17

Mysql возвращает данные с соответствующими им типами данных, поэтому целые числа фактически являются целыми числами, даты и времени datetimes et c ...

Ms sql возвращает данные в виде строк, а не их соответствующих типов данных.

Запрос необработанных данных: (пример данных, возвращаемых в виде строк)

>>> DB::select(DB::raw("select * from pallet_labels where id = 1"))
=> [
     {#3090
       +"id": "1",
       +"crop_date": "2019-08-14",
       +"article_amount": "160",
       +"note": "seeded label",
       +"pallet_label_farmer_id": "1",
       +"made_by": "tomm",
       +"cell_number": "1",
       +"cell_description": "seeded label",
       +"harvest_cycle": "1",
       +"harvest_cycle_day": "1",
       +"created_at": null,
       +"updated_at": null,
       +"deleted_at": null,
       +"cell_id": "1",
       +"user_id": "2",
       +"farmer_id": "1",
       +"cultivation_cycle_id": "1",
       +"pallet_type_id": "1",
       +"status_id": "1",
       +"article_id": "2",
     },
   ]

Я нашел this во время поиска:

Они говорят о добавлении этих опций в вашу "конфигурацию / базу данных. php sqlsrv connection "

'options' => array(
                PDO::ATTR_STRINGIFY_FETCHES => false,
                PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE => true
            )

Однако это ничего не меняет. Я не хочу использовать приведение атрибутов , так как считаю, что это не ответ

...