"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > लारवेल में डेटाबेस सीडर्स के साथ आसानी से डेटा कैसे उत्पन्न करें

लारवेल में डेटाबेस सीडर्स के साथ आसानी से डेटा कैसे उत्पन्न करें

2024-07-31 को प्रकाशित
ब्राउज़ करें:776

How to easily generate data with Database Seeders in Laravel

एप्लिकेशन बनाते समय, चाहे वह छोटा हो, मध्यम हो या बड़ा हो। किसी एप्लिकेशन में परीक्षण डेटा का उपयोग करना अपरिहार्य और महत्वपूर्ण है।

तो आइए दो अलग-अलग परिदृश्यों के साथ सरल से उन्नत की ओर शुरुआत करें।

मैं। सभी एप्लिकेशन या अधिकांश एप्लिकेशन में उपयोगकर्ता होने चाहिए। कभी-कभी, हम उपयोगकर्ताओं को एडमिन या नियमित उपयोगकर्ता के रूप में वर्गीकृत/टैग करना चाहते हैं। तो आइए नीचे सूचीबद्ध तालिका विनिर्देशों के साथ 100 उपयोगकर्ताओं के साथ एक सरल सीडर तैयार करें:

  • आईडी, पहला नाम, अंतिम नाम, ईमेल, पासवर्ड
  • उपयोगकर्ता प्रकार: या तो एक एडमिन या एक नियमित उपयोगकर्ता

तो अब हम शुरू करें।

users तालिका में शामिल होने के लिए, निश्चित रूप से, आपके पास Laravel द्वारा आपके लिए बनाई गई डिफ़ॉल्ट उपयोगकर्ता माइग्रेशन तालिका होगी।

तो इस प्रदर्शन के लिए, आपका टेबल माइग्रेशन इस तरह दिखना चाहिए:

public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('first_name');
            $table->string('last_name');
            $table->string('email');
            $table->string('password');
            $table->enum('user_type', ['user','admin'])->default('user');
            $table->rememberToken();
            $table->timestamps();
        });
    }

हमारी उपयोगकर्ता तालिका के लिए एक सीडर क्लास बनाने के लिए।

php artisan make:seeder UserSeeder

इसलिए, हमारे द्वारा अभी बनाए गए सीडर के लिए मान बनाने के लिए हमें डिफ़ॉल्ट फ़ेकर पैकेज का उपयोग करने की आवश्यकता है जो प्रत्येक लारवेल एप्लिकेशन के साथ आता है।

एक बार में 100 उपयोगकर्ता उत्पन्न करने के लिए, हम पहले एक फॉर-लूप करते हैं और नकली/छद्म डेटा को इस तरह प्रत्येक कॉलम में पास करते हैं:

use Faker\Factory as Faker;

public function run()
{
   $faker = Faker::create();

   for(i = 0; i  $faker->firstName(),
        'last_name' => $faker->lastName(),
        'email' => $faker->email(),
        'password' => bcrypt('hello1234'), // we might want to set this to a value we can easily remember for testing sake
        'user_type' => $faker->randomElement(['admin', 'user'])
      ]);
   }
}

इसे डेटाबेस में जोड़ने के लिए, हमें नीचे दिए गए कमांड को चलाने की आवश्यकता है:

php artisan db:seed --class=UserSeeder

यह 100 उपयोगकर्ता बनाएगा और उन्हें डेटाबेस में सम्मिलित करेगा।

यह इतना आसान है

तो अब, एक अधिक उन्नत समाधान की ओर।

हमें बनाने की आवश्यकता है:

  • 10 नए विभागों के साथ एक विभाग तालिका।
  • हम नए 100 उपयोगकर्ता बनाएंगे।
  • एक स्टाफ तालिका जो समान विवरण के साथ उपयोगकर्ता तालिका को संदर्भित करेगी और विभाग तालिका यानी डिपार्टमेंट_आईडी को संदर्भित करने के लिए एक अतिरिक्त कॉलम होगा।

हम पहले से ही जानते हैं कि उपयोगकर्ता तालिका कैसी दिखेगी, आइए देखें कि कर्मचारी और विभाग तालिका कैसी दिखेगी।

कर्मचारी तालिका

Schema::create('staff', function (Blueprint $table) {
            $table->id();
            $table->string('first_name');
            $table->string('last_name');
            $table->string('email');
            $table->foreignId('department_id')->references('id')->on('departments');
            $table->foreignId('user_id')->references('id')->on('users');
            $table->timestamps();
        });

विभाग तालिका:

Schema::create('departments', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->timestamps();
        });

इसलिए हमें इन तालिकाओं को अपने डेटाबेस में रखने के लिए माइग्रेशन चलाने की आवश्यकता है।

अब, UserSeeder वर्ग के लिए, हमें पहले बताए गए बुलेट बिंदुओं को लागू करना है।

  • 10 नए विभागों के साथ एक विभाग तालिका।
$now = now();
        $count = 0;
        $departmentNames = ['Electronics', 'Home & Garden', 'Toys & Games', 'Health & Beauty', 'Automotive', 'Sports & Outdoors','Clothing & Accessories',
            'Books', 'Music', 'Movies & TV', 'Grocery'
        ];

        for ($j=0; $j  $departmentNames[$j],
                'created_at' => $now,
                'updated_at' => $now,
            ]);
            $count  ;
        }

अंतिम दो बुलेट बिंदुओं को एक साथ लागू करने की आवश्यकता होगी

  • हम नए 100 उपयोगकर्ता बनाएंगे
  • एक स्टाफ तालिका जो समान विवरण के साथ उपयोगकर्ता तालिका को संदर्भित करेगी और विभाग तालिका यानी डिपार्टमेंट_आईडी को संदर्भित करने के लिए एक अतिरिक्त कॉलम होगा।
if ($count == 10) { // we need to make sure we have all 10 departments
            $departments = Department::pluck('id')->toArray();

            for ($i=0; $i  $faker->firstName(),
                    'last_name' => $faker->lastName(),
                    'email' => $faker->email(),
                    'password' => bcrypt('hello1234'),
                    'user_type' => $faker->randomElement(['admin', 'user']),
                    'created_at' => $now,
                    'updated_at' => $now
                ]);

                Staff::create([
                    'first_name' => $user->first_name,
                    'last_name' => $user->last_name,
                    'email' => $user->email,
                    'user_id' => $user->id,
                    'department_id' => $faker->randomElement($departments), // pick random departments from DB
                    'created_at' => $now,
                    'updated_at' => $now
                ]);
            }
}

स्पष्टीकरण:

  • हमने पहले 10 विभाग बनाए।

  • फिर हमने यह जांचने के लिए एक काउंटर स्थापित किया कि क्या सभी 10 विभाग बनाए गए हैं।

  • यदि काउंटर शर्त सत्य है, तो हम 100 उपयोगकर्ता बनाते हैं।

  • इन 100 उपयोगकर्ताओं में से प्रत्येक के लिए, हमें उनके विवरण को स्टाफ़ तालिका नामक एक अन्य तालिका में संदर्भित करने की आवश्यकता है।

  • प्रत्येक कर्मचारी एक उपयोगकर्ता से संबंधित होना चाहिए और एक विभाग से भी संबंधित होना चाहिए, इसलिए ऐसा करने के लिए, हमें पहले बनाए गए सभी विभागों को प्राप्त करना होगा और उन्हें विभाग_आईडी कॉलम में यादृच्छिक रूप से इंजेक्ट करना होगा।

पूर्ण यूजरसीडर कार्यान्वयन

        $now = now();
        $count = 0;
        $departmentNames = ['Electronics', 'Home & Garden', 'Toys & Games', 'Health & Beauty', 'Automotive', 'Sports & Outdoors','Clothing & Accessories',
            'Books', 'Music', 'Movies & TV', 'Grocery'
        ];

        for ($j=0; $j  $departmentNames[$j],
                'created_at' => $now,
                'updated_at' => $now,
            ]);
            $count  ;
        }

        $faker = Faker::create();
        if ($count == 10) {
            $departments = Department::pluck('id')->toArray();

            for ($i=0; $i  $faker->firstName(),
                    'last_name' => $faker->lastName(),
                    'email' => $faker->email(),
                    'password' => bcrypt('hello1234'),
                    'user_type' => $faker->randomElement(['admin', 'user']),
                    'created_at' => $now,
                    'updated_at' => $now
                ]);

                Staff::create([
                    'first_name' => $user->first_name,
                    'last_name' => $user->last_name,
                    'email' => $user->email,
                    'user_id' => $user->id,
                    'department_id' => $faker->randomElement($departments), // pick random departments from DB
                    'created_at' => $now,
                    'updated_at' => $now
                ]);
            }
        }

तो भागो:

php artisan make:seeder --class=UserSeeder

यदि आपके कोई प्रश्न हैं, तो उसे छोड़ने में संकोच न करें। हैप्पी कोडिंग!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/adetolaaremu/how-to-easily-generate-data-with-database-seders-in-laravel-1kg6?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 से संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3