Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

User modelimde böyle bir kod var

 protected $casts = [
        'email_verified_at' => 'datetime',
    ];  

bu ne iş yapar ? ,bir modele bunu tanıtmanın amacı nedir yani hangi amaçla kullanılıyor ?

    teşekkürler . anladığım kadarıyla modele otomatik bir özellik mi ne ekliyormuş

      isset Model'in içindeki özelliklere (id, name, email vs) ulaşmaya çalıştığınızda bunları veritabanında tutulan tiplerinin dışında başka tipe dönüştürerek kullanmak isteyebilirsiniz. Mesela veritabanında json tutulan bir alanı json_decode kullanmadan otomatik array ya da Collection olarak, timestamp bir alanı Date::parse() yapmadan direkt Carbon objesi olarak almak isteyebilirsiniz. İşte model özelliğine ulaşırken nasıl bir tip ile alacağınızı bu casting ile belirliyorsunuz.

      protected $casts = [
          'email_verified_at' => 'datetime',
      ];

      Bu, email_verified_at özelliğine ulaşmaya çalıştığımda bunu bana Carbon objesi olarak ver demek. Bu şekilde yaptığınızda direkt şöyle kullanabiliyorsunuz:

      $user->email_verified_at instanceof \Illuminate\Support\Carbon // true
      
      $user->email_verified_at->diffForHumans(); // 15 dakika önce
      
      $user->email_verified_at->addDays(10)->isPast(); // false (10 gün ilerisi geçmiş tarih mi?)
      
      $user->email_verified_at->toDayDateTimeString(); // Çar, Mar 16, 2022 14:50

      Eğer casting yapmasaydınız direkt veritabanındaki string ifadeyi alırdınız ve elle Carbon objesine çevirmek zorunda kalırdınız:

      $emailVerifiedAt = $user->email_verified_at 
          ? Date::parse($user->email_verified_at)
          : null;
      
      $emailVerifiedAt?->diffForHumans(); // 15 dakika önce ya da null
      16 gün sonra

      ÇOK TEŞEKKÜRLER