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

İnternette toBase() yöntemi ile ilgili doğru düzgün bir örnek bulamadım. Bu yöntem Model üzerinde kullanıldığı zaman ne iş yapar?

  • mgsmus bunu yanıtladı.
  • Kylo Sorgu hazırlanıp çalıştırıldıktan sonra Eloquent özelliklerini (accessor, mutator, relationships vs) devreye almadan size her bir kayıt için bir model yerine direkt veriyi verir. User::toBase()->get() demek DB::table('users')->get() demek oluyor yani.

    • mgsmus

      Seviye 1383
    • Düzenlendi
    • En İyi YanıtKylo tarafından

    Kylo Sorgu hazırlanıp çalıştırıldıktan sonra Eloquent özelliklerini (accessor, mutator, relationships vs) devreye almadan size her bir kayıt için bir model yerine direkt veriyi verir. User::toBase()->get() demek DB::table('users')->get() demek oluyor yani.

      mgsmus Öyleyse bir kullanıcının sadece e-posta adresine ihtiyacım varsa User::toBase()->find($id)->email ve User::find($id)->email arasındaki tek fark bellek kullanımından tasarruf mudur? Verdiğim örnekte toBase() yöntemini kullanmanın dezavantajı var mıdır?

        Kylo Eloquent olmadan direkt veritabanındaki sütunu çekiyorsunuz, o yüzden model üzerine uygulanabilecek tüm Eloquent özelliklerinden sıyrılmış durumda. Bellek tasarrufu var ama toBase() yöntemine eliniz alışmasın, gözden kaçan hatalar yapmanıza sebep olabilir. Örneğinizdeki tekil modelde zaten kullanmanın bir gereği yok. Yüzlerce binlerce kayda tek seferde ihtiyacınız olduğunda kullanmanız gereken bir yöntem.

        Ayrıca örneklerde find($id)->email şeklinde kullanımda hata var. Böyle kullanacağım diyorsanız find($id)?->emailşeklinde null-safe kullanmanız gerekiyor. Belki örnek vermek için yazdınız ama örnekte yazarken bile düzgün yazmak lazım. Konuyu okuyan birileri böyle şeyleri görüp bu şekilde kullanmaya başlayabilir, sonra yanlışlar doğruymuş gibi yayılmaya başlıyor.

        $email = User::find($id)->value('email');

        sorunsuz bir kullanım, Mustafa'nın da belirttiği gibi

        find($id)->email

        bu kullanımdan kaçının.

          sineld Bu da aynı. Kullanıcıyı bulamazsa Call to a member function value() on null hatası verir.

            mgsmus Aceleyle yazdıkdan sonra farkettim, düzelttiğin için teşekkürler.

            $user = User::where('id', $id)->value('email');

            doğrusu olacaktı.