खोज…
सीडर चलाना
आप अपने नए सीडर को डाटाबेससाइडर वर्ग में जोड़ सकते हैं।
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(UserTableSeeder::class);
}
डेटाबेस सीडर चलाने के लिए, कारीगर कमांड का उपयोग करें
php artisan db:seed
यह DatabaseSeeder क्लास चलाएगा। आप मैन्युअल रूप से निर्दिष्ट करने के लिए कि किस चलाने के लिए --class=
विकल्प का उपयोग करना चुन सकते हैं।
* ध्यान दें, यदि आपका सीडर वर्ग नहीं पाया जा सकता है, तो आपको संगीतकार डंपोटोलोड को चलाने की आवश्यकता हो सकती है। यह आमतौर पर तब होता है जब आप कारीगर कमांड का उपयोग करने के बजाय मैन्युअल रूप से एक बीजक वर्ग बनाते हैं।
बीज बनाना
डेटाबेस बीज / डेटाबेस / बीज निर्देशिका में संग्रहीत किए जाते हैं। आप एक कारीगर कमांड का उपयोग करके एक बीज बना सकते हैं।
php artisan make:seed UserTableSeeder
वैकल्पिक रूप से आप एक नया वर्ग बना सकते हैं जो Illuminate\Database\Seeder
विस्तार करता है। क्लास को run()
नाम का एक सार्वजनिक समारोह होना चाहिए।
एक सीडर का उपयोग कर डेटा सम्मिलित करना
आप मॉडल को एक सीडर में संदर्भित कर सकते हैं।
use DB;
use App\Models\User;
class UserTableSeeder extends Illuminate\Database\Seeder{
public function run(){
# Remove all existing entrie
DB::table('users')->delete() ;
User::create([
'name' => 'Admin',
'email' => '[email protected]',
'password' => Hash::make('password')
]);
}
}
एक मॉडल फैक्टरी के साथ डेटा सम्मिलित करना
आप अपने बीजों के भीतर मॉडल कारखानों का उपयोग करना चाह सकते हैं। इससे 3 नए उपयोगकर्ता बनेंगे।
use App\Models\User;
class UserTableSeeder extends Illuminate\Database\Seeder{
public function run(){
factory(User::class)->times(3)->create();
}
}
आप उदाहरण के लिए, पासवर्ड की तरह अपने बोने पर विशिष्ट क्षेत्रों को परिभाषित करना चाह सकते हैं। यह एक ही पासवर्ड के साथ 3 उपयोगकर्ता बनाएगा।
factory(User::class)->times(3)->create(['password' => '123456']);
MySQL डंप के साथ सीडिंग
बीज बनाने के पिछले उदाहरण का पालन करें। यह उदाहरण प्रोजेक्ट डेटाबेस में तालिका को सीड करने के लिए MySQL डंप का उपयोग करता है। बीज बोने से पहले तालिका बनाई जानी चाहिए।
<?php
use Illuminate\Database\Seeder;
class UserTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$sql = file_get_contents(database_path() . '/seeds/users.sql');
DB::statement($sql);
}
}
हमारा $ sql हमारे users.sql डंप की सामग्री होने जा रहा है। डंप में एक INSERT INTO स्टेटमेंट होना चाहिए। यह आपके ऊपर होगा कि आप अपने डंप को कहां स्टोर करते हैं। उपरोक्त उदाहरण में, इसे प्रोजेक्ट डायरेक्टरी \database\seeds
में संग्रहीत किया जाता है। लार्वा के हेल्पर फ़ंक्शन डेटाबेस_पाथ database_path()
का उपयोग करना और डंप की निर्देशिका और फ़ाइल नाम को जोड़ना।
INSERT INTO `users` (`id`, `name`, `email`, `password`, `remember_token`, `created_at`, `updated_at`) VALUES
(1, 'Jane', '[email protected]', 'superSecret', NULL, '2016-07-21 00:00:00', '2016-07-21 00:00:00'),
(2, 'John', '[email protected]', 'sup3rS3cr3t', NULL, '2016-07-21 00:00:00', '2016-07-21 00:00:00');
DB::statement($sql)
सीडर्स के चलने के बाद आवेषण निष्पादित करेगा। पिछले उदाहरणों की तरह, आप UserTableSeeder
द्वारा उपलब्ध कराए गए DatabaseSeeder
वर्ग में UserTableSeeder
डाल सकते हैं:
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(UserTableSeeder::class);
}
}
और परियोजना निर्देशिका php artisan db:seed
में सीएलआई से चलाएं php artisan db:seed
। या आप php artisan db:seed --class=UsersTableSeeder
का उपयोग करके एकल वर्ग के लिए php artisan db:seed --class=UsersTableSeeder
चला सकते हैं php artisan db:seed --class=UsersTableSeeder
बीज उत्पन्न करने के लिए faker और ModelFactories का उपयोग करना
1) बुनियादी सरल तरीका
डेटाबेस-संचालित अनुप्रयोगों को अक्सर परीक्षण और डेमो उद्देश्यों के लिए सिस्टम में पूर्व-वरीयता प्राप्त डेटा की आवश्यकता होती है।
ऐसा डेटा बनाने के लिए, पहले सीडर क्लास बनाएं
ProductTableSeeder
use Faker\Factory as Faker;
use App\Product;
class ProductTableSeeder extends DatabaseSeeder {
public function run()
{
$faker = $this->getFaker();
for ($i = 0; $i < 10; $i++)
{
$name = $faker->word;
$image = $faker->imageUrl;
Modelname::create([
'name' => $name,
'image' => $image,
]);
}
}
}
एक बीजक वर्ग को निष्पादित करने में सक्षम होने के लिए, आप इसे डेटाबेससेडर वर्ग से कॉल कर सकते हैं, बस उस बीजक का नाम पास करके जिसे आप चलाना चाहते हैं:
Illuminate \ Database \ Seeder का उपयोग करें;
class DatabaseSeeder extends Seeder {
protected $faker;
public function getFaker() {
if (empty($this->faker)) {
$faker = Faker\Factory::create();
$faker->addProvider(new Faker\Provider\Base($faker));
$faker->addProvider(new Faker\Provider\Lorem($faker));
}
return $this->faker = $faker;
}
public function run() {
$this->call(ProductTableSeeder::class);
}
}
सीडर बनाने के बाद $ composer dump-autoload
को चलाने के लिए मत भूलना, क्योंकि वे संगीतकार द्वारा स्वचालित रूप से ऑटोलॉइड नहीं हैं (जब तक कि आपने कारीगर कमांड द्वारा सीडर नहीं बनाया $ php artisan make:seeder Name
)
अब आप इस कारीगर कमांड php artisan db:seed
को चलाकर बीज के लिए तैयार हैं
2) मॉडल कारखानों का उपयोग करना
सबसे पहले आप App/database/factories/ModelFactory.php
में प्रत्येक मॉडल के लिए विशेषताओं के एक डिफ़ॉल्ट सेट को परिभाषित करने के लिए
एक उपयोगकर्ता मॉडल को एक छूट के रूप में लेते हुए, यह एक मॉडलफैक्ट कैसे दिखता है
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => bcrypt(str_random(10)),
'remember_token' => str_random(10),
];
});
अब एक टेबल php artisan make:seeder UsersTableSeeder
बनायें php artisan make:seeder UsersTableSeeder
और यह जोड़ें
public function run()
{
factory(App\User::class, 100)->create()
}
फिर इसे DatabaseSeeder
जोड़ें
public function run()
{
$this->call(UsersTableSeeder::class);
}
यह 100 रिकॉर्ड के साथ तालिका में अंकुश लगाएगा।