я использую загореться 5.1. * - (на самом деле «laravel/lumen-framework": "5.1.*
»)Eloquent модель ToArray() теряет тип для ключей
Моя проблема заключается в том, что у меня есть другое поведение, когда я
var_dump($model->toArray());
для двух различных (но с аналогичными php version 5.6.8-1~dotdeb+wheezy.1 vs PHP 5.6.10-1+deb.sury.org~trusty+1
) и теми же пакетами поставщиков).
В первой среде, целочисленные атрибуты будут INT:
array:4 [▼
"id" => 1
"value" => "email"
"standard" => 1
"order" => 0
]
во втором, его строка:
array:4 [▼
"id" => "1"
"value" => "email"
"standard" => "1"
"order" => "0"
]
Любые идеи?
Сначала вы должны проверить, действительно ли тот, кто бросает плохо, фактически вытаскивает данные из базы данных. Это зависит от того, какой драйвер MySQL вы используете. MySQLND делает это правильно, в то время как libmysql извлекает все значения в виде строк, так что, возможно, это так. Поэтому сначала попробуйте сбросить модель на эту вторую среду перед тем, как выполнить кастинг в массив и проверить правильность ее атрибутов. Я бы поспорил, что это не так;) –
В то же время я нахожу решение, о котором вы говорите. Установка, apt-get install php5-mysqlnd решила проблему. Я думаю, что это связано с методом toArray, и они должны поместить mysqlnd как зависимость или, по крайней мере, как предложение. – catalinux
На самом деле это не мешает методу toArray(), как я уже упоминал. Разница исходит от соединителя базы данных, который либо извлекает все данные в виде строки (libmysql), либо значения отливки, например, целые числа (mysqlnd). Таким образом, это исключительно проблема на стороне сервера, которую вы не можете решить, используя компоновщик deps, а также пакет Linux, а не PHP. –