Laravel Eloquent найдет возвращение null

Я пытаюсь получить запись из моей базы данных с помощью метода поиска Eloquents, однако он неожиданно возвращает null. Если я запускаю запрос вручную в базе данных, он возвращает ожидаемую запись.

Я использую следующее в Laravel:

$support = Support::find(02155); 

И следующее непосредственно в базе данных:

 SELECT * FROM support WHERE id = 02155; 

Столбец первичного ключа называется «id» с типом smallint (5), unsigned и zerofill вместе с набором автоматического инкремента. Я основывал вышеуказанный «ручной» запрос на документации Laravel в соответствии с тем, что должен выполнять Laravel.

Не сообщалось об ошибках (что я вижу), и если я изменю метод Eloquent на «все», тогда все записи будут правильно возвращены.

Это вызвано тем, что числа, начинающиеся с 0, считаются восьмеричными по PHP, согласно: http://php.net/manual/en/language.types.integer.php

Кажется, что PHP преобразует число в десятичный знак перед выполнением запроса MySQL, что означает, что запрос сформирован с неправильным числом.

Например:

 Support::find(02155); 

становится:

 'SELECT * FROM mytable WHERE id = 1133' 

Решение

Я решил это, указав число в целое число с помощью (int), прежде чем использовать его с методом поиска Eloquents. Он также будет работать, если вы передадите номер в виде строки (т. Е. В кавычках), например:

 Support::find('02155');