Model Eloquent sınıfının bir genişletmesi olduğuna göre onun kurallarını sürdürecektir. Bu kurallar arasında otomatik artan birincil anahtarın adının "id" olması, zaman damgaları alanlarının adlarının "updated_at" ve "created_ad" olması gibi alan adı isimlendirmelerinin snakecase
olsa bile, erişimci ve değiştiricilerde camelcase kullanılmasıdır.
http://dokuman.laravel.gen.tr/docs/eloquent#accessors-and-mutators 'de bu, özellikle vurgulanmıştır:
Yalnız unutmamanız gereken şey, veritabanı sütunlarınızın isimleri yılan tarzı (küçük harfli kelimelerin boşluk olmaksızın alt tire ile birbirine bağlanması) olsa dahi, metodlarınızın deve tarzı (birinci kelimenin tümü küçük harf olmak ve sonraki kelimelerin ilk harfi büyük diğer harfleri küçük olmak üzere boşluk olmaksızın kelimelerin yanyana dizilmesi) olması gerektiğidir:
Model sınıfında, öncelikle tanımlı erişimci ve değiştirici var mı diye kontrol edilir, bunlar varsa bunlarda normal attribute'lere (attributeler normalde alanları temsil eder) eklenir.
1907: /**
1908: * Determine if a get mutator exists for an attribute.
1909: *
1910: * @param string $key
1911: * @return bool
1912: */
1913: public function hasGetMutator($key)
1914: {
1915: return method_exists($this, 'get'.studly_case($key).'Attribute');
1916: }
1917:
Not: studly_case ile camel case arasındaki fark ilk kelimenin camel olanda küçük harfle, studly'de Büyük harfle başlamasıdır. başında "get" olduğu için hepsi birden camel_case olmaktadır.
Bununla birlikte, buradaki "olsa bile" önemlidir ve karşılaştığınız sorunun nedeni erişimci tanımlamasında olamaz. Zira studly_case('FirstName') yine 'FirstName' olarak çıkacaktır.
Model sınıfında public static olarak tanımlanmış $snakeAttributes = true; yerine kendi Modelinizde bunu false ayarlayarak sorunu çözebileceğinizi sanıyorum.