الفرق بين المراجعتين لصفحة: «Laravel/seeding»
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
||
سطر 2: | سطر 2: | ||
[[تصنيف:Laravel]] | [[تصنيف:Laravel]] | ||
[[تصنيف:Laravel Database]] | [[تصنيف:Laravel Database]] | ||
== مقدمة == | == مقدمة == | ||
يتضمّن [[Laravel]] تابع بسيط لملء قاعدة البيانات الخاصة بك مع بيانات للتجربة باستخدام أصناف البذر. ستجد جميع أصناف البذر في مجلّد database/seeds، وقد تحتوي أصناف البذر على أي اسم تريده، لكن ربما يجب عليك اتباع بعض المعايير المعقولة مثل <code>UsersTableSeeder</code> ...إلخ. وبشكل افتراضي، سيكون صنف <code>DatabaseSeeder</code> معرّف لك، ومن خلال هذا الصنف يمكنك استخدام أسلوب call لتشغيل بقيّة أصناف البذر، مما يسمح لك بالتحكم بترتيب البذر. | يتضمّن [[Laravel]] تابع بسيط لملء قاعدة البيانات الخاصة بك مع بيانات للتجربة باستخدام أصناف البذر. ستجد جميع أصناف البذر في مجلّد database/seeds، وقد تحتوي أصناف البذر على أي اسم تريده، لكن ربما يجب عليك اتباع بعض المعايير المعقولة مثل <code>UsersTableSeeder</code> ...إلخ. وبشكل افتراضي، سيكون صنف <code>DatabaseSeeder</code> معرّف لك، ومن خلال هذا الصنف يمكنك استخدام أسلوب call لتشغيل بقيّة أصناف البذر، مما يسمح لك بالتحكم بترتيب البذر. |
مراجعة 21:04، 20 أكتوبر 2018
مقدمة
يتضمّن Laravel تابع بسيط لملء قاعدة البيانات الخاصة بك مع بيانات للتجربة باستخدام أصناف البذر. ستجد جميع أصناف البذر في مجلّد database/seeds، وقد تحتوي أصناف البذر على أي اسم تريده، لكن ربما يجب عليك اتباع بعض المعايير المعقولة مثل UsersTableSeeder
...إلخ. وبشكل افتراضي، سيكون صنف DatabaseSeeder
معرّف لك، ومن خلال هذا الصنف يمكنك استخدام أسلوب call لتشغيل بقيّة أصناف البذر، مما يسمح لك بالتحكم بترتيب البذر.
كتابة منشئات البذور
لتوليد منشئ البذرة (seeder)، نفّذ أمر make:seeder
Artisan وستجد جميع منشئات البذور المولّدة عن طريق هذا الإطار موجودة في مجلد database/seeds:
php artisan make:seeder UsersTableSeeder
يحتوي صنف منشئ البذرة (seeder) على تابع واحد بشكل افتراضي، وهو run
، وسيشتغل هذا التابع عند تنفيذ أمر db:seed
Artisan. ويمكنك إضافة البيانات إلى قاعدة البيانات كيفما تشاء داخل التابع run
، ويمكنك استخدام أداة إنشاء الاستعلام لإدراج البيانات أو يمكنك استخدام مولّدات نموذج Eloquent.
تنبيه: تعطّل حماية التعيين الجماعي بشكل تلقائي عند عملية بذر قاعدة البيانات.
كمثال، لنعدّل صنف DatabaseSeeder
الافتراضي ونضيف عبارة إضافة إلى قاعدة البيانات إلى التابع run
:
<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class DatabaseSeeder extends Seeder
{
/**
* تنفيذ بذر قاعدة البيانات *
* @إعادة void
*/
public function run()
{
DB::table('users')->insert([
'name' => str_random(10),
'email' => str_random(10).'@gmail.com',
'password' => bcrypt('secret'),
]);
}
}
ملاحظة: يمكنك كتابة تلميحات عن النوع لأي اعتماديّات تحتاجها في توقيع التابع run
، وستُحل تلقائيًا عبر حاوي خدمات Laravel.
استخدام مولّدات النماذج
سيكون تحديد خصائص نموذج بذرة أمرًا مرهقًا للغاية بالطبع. يمكنك استخدام المولّدات في هذه الحالة لتوليد كميات كبيرة من سجلات قاعدة البيانات بسهولة. راجع أولًا وثائق مولّد النموذج لتتعلم كيفية تحديد المولّدات الخاصة بك، وبمجرّد تحديدها، يمكنك استخدام الدالة المساعدة factory
لإدراج السجلات في قاعدة البيانات الخاصة بك.
على سبيل المثال، لننشئ 50 مستخدم ونربط علاقة لكل مستخدم:
/**
* تنفيذ بذر قاعدة البيانات *
* @إعادة void
*/
public function run()
{
factory(App\User::class, 50)->create()->each(function ($u) {
$u->posts()->save(factory(App\Post::class)->make());
});
}
استدعاء منشئات بذور إضافيّة
ضمن صنف DatabaseSeeder
، يمكنك استخدام التابع call
لتنفيذ أصناف منشئات بذور إضافيّة، وسيسمح لك هذا التابع بتقسيم بذر قاعدة بياناتك إلى عدة ملفات بحيث لا يكون صنف منشئ بذرة كبير للغية.
مرّر اسم صنف منشئ البذرة الذي ترغب بتشغيله:
/**
* تنفيذ بذر قاعدة البيانات
* void إعادة@
*/
public function run()
{
$this->call([
UsersTableSeeder::class,
PostsTableSeeder::class,
CommentsTableSeeder::class,
]);
}
تشغيل منشئات البذور
بمجرّد كتابة منشئ البذرة، قد تحتاج إلى إعادة إنشاء محمّل Composer التلقائي باستخدام الأمر dump-autoload
:
composer dump-autoload
يمكنك الآن استخدم أمر db:seed
لبذر قاعدة بياناتك. يشغّل الأمر db:seed
افتراضيًّا صنف DatabaseSeeder
، والذي يمكن استخدامه لاستدعاء أصناف بذر أخرى. ومع ذلك، يمكنك استخدام الخيار --class
لتحديد صنف بذر يُشغّل بشكل افتراضي:
php artisan db:seed
php artisan db:seed --class=UsersTableSeeder
يمكنك أيضًا بذر قاعدة بياناتك باستخدام الأمر migrate:refresh
، والذي سيؤدي إلى إعادة تشغيل جميع عمليات التهجير، وهذا الأمر مفيد لإعادة بناء قاعدة بياناتك بشكل كامل:
php artisan migrate:refresh --seed