As your case was quite interesting to me I spent some time searching for you a possible answer. Frameworks like Laravel use the PDO for working with different kind of DBMS and this kind of approach requires specific drivers.
I think that the problem is because of the php5-mysql library that is involved in the interaction with your MySQL database: this lib does NOT convert the number-type columns to a type number, leaving the Eloquent ORM with a string-type in return.
A possible solution is to replace the php5-mysql library with php5-mysqlnd (sudo apt-get install php5-mysqlnd). In fact the mysqlnd library returns a number type value instead of an insignificant string. As you're working with two different kind of PHP versions on your environments, I'm quite sure that it's just a matter of different libraries (and a different way of treating the value data type).
A quicker but dirt solution is to define the $casts protected property as an array where the key is the column and the value is the type you want that value to be casted. In example:
protected $casts = ['category_id' => 'integer']
This paragraph of the Laravel docs will be helpful to those are interested in this kind of approach
Anyway, this kind of problems should be avoided using a virtual machine packed for the dev team. Laravel offers an awesome virtual environment to use (I'm sure you've already heard of Homestead) that you can even use for other web-based applications, frameworks and CMS.