Laravel Seeder with image

Laravel Seeder with image

كيف تقوم بتعبأة البيانات للتجربة في جدول باستخدام seeder في laravel مع الصور

هناك طريقتين رئيسيتن :

  1.  من خلال   faker generation image Model Factories

  2. من خلال موقع Placeimg

بداية نقوم بإنشاء الجداول المراد عمل تعبئة تلقائية للبيانات وفي المثال الذي سنقوم بالشرح عليه سنقوم بعمل جدول news يتضمن الحقول التالية:

  1. عنوان الخبر
  2. تفاصيل الخبر
  3. صورة الخبر

من خلال command artisan  نقوم بتطبيق الأمر التالي لانشاء الملف

php artisan make:migration create_news_table

في المجلد  database\migrations

Created Migration: 2018_11_23_204614_create_news_table

استعراض الملف  لانشاء جدول أخبار بالارافيل بعد تطبيق الأمر php artisan make:migration create_news_table

 

نقوم بإضافة الحقول عنوان وتفاصيل وصورة الخبر database\migrations\2018_11_23_204614_create_news_table.php

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateNewsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('news', function (Blueprint $table) {
            $table->increments('id');
            $table->string('news_title');
            $table->string('news_description');
            $table->string('news_img');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('news');
    }
}
laravel,migration,php artisan,إنشاء جدول بلارافيل
أضافة الحقول الخاصة بالأخبار العنوان والتفاصيل وصورة الخبر

 

php artisan migrate
php artisan migrate

بعد تطبيق الأمر

php artisan migrate

نذهب لمعاينة قواعد البيانات للتأكد من أضافة الجدول localhost/phpmyadmin

phpmyadmin news table fileds
phpmyadmin news table fileds

إنشاء Model الخاصة بالجدول news بالأمر التالي

php artisan  make:model news 

php artisan make model news table
php artisan make model news table

استعراض المودل الخاص بالأخبار بعد تطبيق الأمر السابق php artisan make:model news  والموجود في مجلد app

laravel news empty model
laravel news empty model

نقوم بعمل أضافات على news model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class news extends Model
{
    //
    protected $fillable = [
        'news_title', 'news_description', 'news_img',
    ];
}


نقوم بإنشاء مصنع البيانات لإنشاء بيانات لتعبئة جدول الأخبار يتم تعبأتها بشكل تلقائي للفحص وذلك من خلال تطبيق الأمر التالي

php artisan make:factory NewsFactory --model="App\news"
php artisan make factory news model
php artisan make factory news model

معاينة الملف NewsFactory.php لنقوم بالتعديل عليه

NewsFactory after php artisan make factory news model
NewsFactory after php artisan make factory news model

الآن لاستخدام الطريقة الأولى من خلال   faker generation image Model Factories l مع ضرورة إنشاء مجلد images للصور في مجلد public

public\images نقوم بتعديل NewsFactory.php كما هو موضح:

<?php

use Faker\Generator as Faker;

$factory->define(App\news::class, function (Faker $faker) {
    return [
        'news_title' => $faker->sentence(5),
        'news_description' => $faker->text(),
        'news_img' => $faker->image('public\images',400,300,null,false),
    ];
});
NewsFactory.php after update code with used Faker Generation images
NewsFactory.php after update code with used Faker Generation images

الآن لاستخدام الطريقة الثانية من خلال موقع Placeimg نقوم بتعديل NewsFactory.php كما هو موضح:

<?php

use Faker\Generator as Faker;

$factory->define(App\news::class, function (Faker $faker) {
    return [
        'news_title' => $faker->sentence(5),
        'news_description' => $faker->text(),
        'news_img' => 'https://placeimg.com/640/480/tech/any?' . rand(1, 100),
    ];
});
NewsFactory.php after update code with placeimg website used
NewsFactory.php after update code with placeimg website used

بعد اختيار طريقة من السابق نقوم بإنشاء ملف News Seeder من خلال تطبيق الأمر التالي:

php artisan make:seeder NewsTableSeeder
php artisan make seeder news table
php artisan make seeder news table

نقوم بمعاينة الملف NewsTableSeeder.php

NewsTableSeeder After make seeder
NewsTableSeeder After make seeder

نقوم بتعديل ملف seeder لتحديد عدد السجلات المراد أضافتها على جدول news حيث سنضيف 100 سجل كما هو موضح :

NewsTableSeeder.php

<?php

use Illuminate\Database\Seeder;

class NewsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(App\news::class, 100)->create();
    }
}
NewsTableSeeder code to fill news table 100 row generation data
NewsTableSeeder code to fill news table 100 row generation data

في المجلد seeds يوجد ملف DatabaseSeeder.php نقوم بإضافة NewsTableSeeder كما هو موضح

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {

         $this->call(NewsTableSeeder::class);
    }
}

add NewsTableSeeder to DatabaseSeeder
add NewsTableSeeder to DatabaseSeeder

الآن أصبحت جاهزا لتطبيق seeder لتتمكن من تعبئة تلقائية للجدول الأخبار ببيانات تلقائية مع الصور ولتطبيق seeder نكتب الأمر التالي:

php artisan db:seed
php artisan db seed to news table
php artisan db seed to news table

في حال تم تطبيق الطريقة الأولى في NewsFactory باستخدام Faker يقوم بانشاء بيانات مع رفع الصورة في الملجد public\images للصور المضافة في جدول الأخبار

after seed with Facker generation NewsFactory and upload imges in public images folder
after seed with Facker generation NewsFactory and upload imges in public images folder

أما في حال استخدام الطريقة الثانية NewsFactory باستخدام موقع placeimg ستضاف البيانات وروابط الصور من الموقع دون تحميلها على موقعك

after seed with place img website NewsFactory
after seed with place img website NewsFactory

تم إعداده الشرح بواسطة ا.سامر عبدالرؤوف ياغي

 

 

شاهد أيضاً

شعار شركة ميكروسوفت

“تحديث طارئ” من مايكروسوفت لسد ثغرة إنتل “الخطيرة”

 أطلقت شركة ويندوز “تحديثا طارئا” لمواجهة ثغرة خطيرة في معالجات الكمبيوتر، قد تمكن القراصنة من …