• 27-08-2022, 03:36:00
    #1
    Herkese selamlar arkadaşlar daha önceki konularımdada baya güzel şeylere değinmiştim şimdi bu konumdada değinicem bu sefer konumuz adındanda anlaşılacağı gibi fake data oluşturma yani bu nedemek oluyor?? tabiikide veritabanına konsoldan komutu yazdığımızda istediğimiz kadar fake datayı veritabanına yazıyor peki bunu nasıl yapıyoruz hep birlikte ona bakalım... yani 2000 tanede veriyi birseferde kolayca yazarım demek oluyor

    şimdi ilk önce fakedata oluşturmamız için laravel projemizdeki factories klasöründe yeni bir sayfa açıyoruz ve bu sayfa aşağıdaki gibi olucak hemen açalım birtane ve aşağıdaki kodları inceleyelim
    komut olarak terminale şu komutu yazıyoruz : php artisan make:factory SayfaismiFactory
    yani bu şekilde şimdi oluşturduğumuz sayfamıza kodlarımızı yazmaya geçelim

    factory dosyamız:

    <?php
    namespace Database\Factories;
    use Illuminate\Database\Eloquent\Factories\Factory;
    use App\Models\Blog;
    use Illuminate\Support\Str;
    /**
     * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Model>
     */
    class BlogFactory extends Factory
    {
        /**
         * Define the model's default state.
         *
         * @return array<string, mixed>
         */
        public function definition()
        {
            return [
                
    'blog_resim' => fake()->name(),
    'blog_baslik' => fake()->name(),
    'yazi' => fake()->text(),
    'on' => '0',
            ];
        }
    }
    şimdi yukarda ne yaptık?? modelimizi tanıttık str uzantımızı tanıttık ve fonksiyonumuzun içinde yani definition fonksiyonumuzun içinde hangi tablonun sütunlarına ne eklemek istiyorsak onları yazıyoruz mesela veritabanındaki blogs tablosundaki blog_resim sütünuna ben fake()->name() ekliyorum yani bu nedemek ben bu blog_resim sütununa rasgele bir isim ekliyorum bunu laravel kendisi otomatik yapıyor ve aynı şekildede diğerlerini yazıyoruz belirtiyoruz.. ve ondan sonra sıra geldi seeders klasörümüzdeki seed dosyamızı oluşturmaya hemen ona bakalım:

    seed dosyamız:

    <?php
    namespace Database\Seeders;
    // use Illuminate\Database\Console\Seeds\WithoutModelEvents;
    use Illuminate\Database\Seeder;
    
    use App\Models\Blog;
    class DatabaseSeeder extends Seeder
    {
        /**
         * Seed the application's database.
         *
         * @return void
         */
        public function run()
        {
    
    
    
    Blog::factory()
    ->count(10)
    ->create();
    
    
        }
    }
    evet burda ne yaptık Blog factory sayfamızı buraya çağırdık ve create deyip countta kaçtane veri kaydetmesini istiyorsak veri tabanına okadar kaydet diyoruz ve bunları da run fonksiyonunun içine yazdık.. ve son olarakta şu aşağıda yazacağım komutu terminale yazıyoruz ve işte bukadar diyoruz

    komut: php artisan db:seed --class=DatabaseSeeder
    neden DatabaseSeeder yazdık?? çünkü seeder dosyamızın adı bu olduğu için.. işte bugünlük konumuzda bukadar arkadaşlar umarım sizlere bu ders ilaç gibi gelmiştir ben valla vakit buldukça r10da böle güzel paylaşımlar yayınlıycam çünkü çoğu zaman vakit olmuyor laravel ile script yazıyorum ama vakit bulucam sizleri aydınlatıcam herkese sevgiler diliyorum sağlıcakla kalın
  • 27-08-2022, 03:52:13
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    SayfaismiFactory yerine ModelismiFactory gibi düşünülürse daha mantıklı olur, modeller için factory çalıştırılıyor.

    'blog_resim' => fake()->name(),
    Neden name?

    'blog_resim' => fake()->imageUrl($width, $height, 'cats')
    Resimde name yerine image kullanırsan daha iyi olabilir sanki.

    Aynı şekilde BlogTitle için realText(fake()->numberBetween(10,20)). Name ile kişi ismi çağırır.

    Tümünü incelemedim üstten bir göz gezdirdim.
    PHP ile ilgili paylaşımlar görmek hoşuma gidiyor. Elinize emeğinize sağlık. Biraz daha titiz çalışırsanız ve Türkçe kurallarına uyarsanız daha kaliteli paylaşımlara ulaşabiliriz.
  • 27-08-2022, 03:54:23
    #3
    mJet adlı üyeden alıntı: mesajı görüntüle
    SayfaismiFactory yerine ModelismiFactory gibi düşünülürse daha mantıklı olur, modeller için factory çalıştırılıyor.

    'blog_resim' => fake()->name(),
    Neden name?

    'blog_resim' => fake()->imageUrl($width, $height, 'cats')
    Resimde name yerine image kullanırsan daha iyi olabilir sanki.

    Aynı şekilde BlogTitle için realText(fake()->numberBetween(10,20)). Name ile kişi ismi çağırır.

    Tümünü incelemedim üstten bir göz gezdirdim.
    PHP ile ilgili paylaşımlar görmek hoşuma gidiyor. Elinize emeğinize sağlık. Biraz daha titiz çalışırsanız ve Türkçe kurallarına uyarsanız daha kaliteli paylaşımlara ulaşabiliriz.
    teşekkür ederim
  • 27-08-2022, 04:10:12
    #4
    Bu arada database seeder çağırmanıza gerek yok çünkü db seed zaten onu çağırıyor direk php artisan db:seed yazabilirsiniz. Bir de seederları toplu olarak call ile çağırırsanız daha sağlıklı olur.
  • 27-08-2022, 04:14:16
    #5
    blap adlı üyeden alıntı: mesajı görüntüle
    Bu arada database seeder çağırmanıza gerek yok çünkü db seed zaten onu çağırıyor direk php artisan db:seed yazabilirsiniz. Bir de seederları toplu olarak call ile çağırırsanız daha sağlıklı olur.
    evet db seed bütün seedleri çağırır eğer sayfa isminle çağırırsak sadece o sayfanın seedlerini çalıştırır
  • 27-08-2022, 13:35:48
    #6
    yazilimdukkanim adlı üyeden alıntı: mesajı görüntüle
    evet db seed bütün seedleri çağırır eğer sayfa isminle çağırırsak sadece o sayfanın seedlerini çalıştırır
    Hayır bütün seederları çağırmaz default olarak database seeder dosyasını çağırır. Tüm seederları çağırmak istiyorsanız hepsini eklemek zorundasınız. Yani emojiyle falan mesaj veriyorsunuz ama konudan haberiniz yok biraz Laravel dökümanını okuyun derim

    https://laravel.com/docs/9.x/seeding#main-content
  • 27-08-2022, 16:40:21
    #7
    blap adlı üyeden alıntı: mesajı görüntüle
    Hayır bütün seederları çağırmaz default olarak database seeder dosyasını çağırır. Tüm seederları çağırmak istiyorsanız hepsini eklemek zorundasınız. Yani emojiyle falan mesaj veriyorsunuz ama konudan haberiniz yok biraz Laravel dökümanını okuyun derim

    https://laravel.com/docs/9.x/seeding#main-content
    hayır yanlış biiliyorsun seninle burda tartışmıycam çünkü muhattabım değilsin ok bi bak bakalım databaseSeeder dışında başka seedlerde açarsak eğer e haliyle öbür seedlerdeki dosyalarıda çalıştırcaktır bu komut yapan ne?? db:seed komutudur ama ben şunu anladımki sen öğrenmeye açık biri değilsin paylaşımcı biride değilsin anladığıma göre birileri birilerine bişi öğretince hemen şaşırıyorsunuz aaaaa diyorsunuz öğretmesin göstermesin diyorsunuz ama ben inadına millete burda bildiklerimi öğreticem ok
  • 27-08-2022, 17:14:36
    #8
    yazilimdukkanim adlı üyeden alıntı: mesajı görüntüle
    hayır yanlış biiliyorsun seninle burda tartışmıycam çünkü muhattabım değilsin ok bi bak bakalım databaseSeeder dışında başka seedlerde açarsak eğer e haliyle öbür seedlerdeki dosyalarıda çalıştırcaktır bu komut yapan ne?? db:seed komutudur ama ben şunu anladımki sen öğrenmeye açık biri değilsin paylaşımcı biride değilsin anladığıma göre birileri birilerine bişi öğretince hemen şaşırıyorsunuz aaaaa diyorsunuz öğretmesin göstermesin diyorsunuz ama ben inadına millete burda bildiklerimi öğreticem ok
    İstediğiniz zaman bu dediğinizi canlı deneme taraftarıyım eğer benim dediğim doğruysa hesabınızı kapatırsınız sizin dediğiniz doğruysa ben hesabımı kapatırım İnsanlara bilmediğiniz şeyi öğretemezsiniz.
  • 28-08-2022, 00:13:17
    #9
    yazilimdukkanim adlı üyeden alıntı: mesajı görüntüle
    hayır yanlış biiliyorsun seninle burda tartışmıycam çünkü muhattabım değilsin ok bi bak bakalım databaseSeeder dışında başka seedlerde açarsak eğer e haliyle öbür seedlerdeki dosyalarıda çalıştırcaktır bu komut yapan ne?? db:seed komutudur ama ben şunu anladımki sen öğrenmeye açık biri değilsin paylaşımcı biride değilsin anladığıma göre birileri birilerine bişi öğretince hemen şaşırıyorsunuz aaaaa diyorsunuz öğretmesin göstermesin diyorsunuz ama ben inadına millete burda bildiklerimi öğreticem ok
    ?

    1.si üslubun çok ama çok yanlış. Ve bin bilsen de bir bilenin dediğine kulak ver.
    2.si DatabaseSeeder otomatik db:seed tarafından çalıştırılır. Sen BlogSeeder diye bir seeder eklersen BlogSeeder'ı dediğin şekilde çalıştırman lazım.

    Hem insanlara üstünkörü bilginle ahkam kesemezsin. Eğitici olsun diye (ya da kategoride mesaj kasmak için) bir konu açmışsın, insanlar senin bilgilerine ek bilgi vermek için ya da yanlış varsa düzeltmek için konuya katkı yapmaya çalışsın ama senin mesajına bak. Yazık, birşey diyemiyorum.