Я использую Laravel 5 и имею модельную Book
.
У меня две среды – dev и производство
На dev : В tinker
, когда я делаю
Book::first()
Это дает мне
App\Book { id: 1, name: ...
О производстве : То же самое дает мне
App\Book { id: "1", name: ...
Обратите внимание на то, что id
– int
в dev, но string
для производства
Из-за этого условие вроде
if($id === $book->id)
который работает правильно на dev , не работает на производстве .
Любая идея, почему это так? Есть ли способ заставить производственную среду дать мне int
вместо string
?
PS:
composer.json
и composer.lock
точно такие же на dev и production . Таким образом, работающий composer install
на производстве должен дать мне такую же среду там, что и на dev . mysql
. homestead
. Book
– это просто фиктивная модель, которую я использовал здесь. Все мои модели ведут себя так же, как описано выше. Очевидно, вы не хотите делать кастинг вручную, как это было предложено в комментарии. Кажется, что на одном сервере вы пропустите расширение mysqlnd (мне нужно предположить, что вы используете MySQL, потому что вы не упомянули его в своем вопросе), что приводит к тому, что все типы данных возвращаются в виде строк.