find () на модели дает id как строку в одной среде, а int в другой

Я использую Laravel 5 и имею модельную Book .

У меня две среды – dev и производство

На dev : В tinker , когда я делаю

 Book::first() 

Это дает мне

 App\Book { id: 1, name: ... 

О производстве : То же самое дает мне

 App\Book { id: "1", name: ... 

Обратите внимание на то, что idint в dev, но string для производства

Из-за этого условие вроде

 if($id === $book->id) 

который работает правильно на dev , не работает на производстве .

Любая идея, почему это так? Есть ли способ заставить производственную среду дать мне int вместо string ?

PS:

  1. Я установил Laravel на dev, а затем вытащил код на производство через git . Таким образом, мои composer.json и composer.lock точно такие же на dev и production . Таким образом, работающий composer install на производстве должен дать мне такую ​​же среду там, что и на dev .
  2. Я использую базу данных mysql .
  3. Моя среда для разработчиков – это homestead .
  4. Book – это просто фиктивная модель, которую я использовал здесь. Все мои модели ведут себя так же, как описано выше.

Очевидно, вы не хотите делать кастинг вручную, как это было предложено в комментарии. Кажется, что на одном сервере вы пропустите расширение mysqlnd (мне нужно предположить, что вы используете MySQL, потому что вы не упомянули его в своем вопросе), что приводит к тому, что все типы данных возвращаются в виде строк.