اذهب إلى المحتوى
  • 0

كيف اقوم بعمل بذر للصور في الdb في laravel7

Hafsa Aly

السؤال

Recommended Posts

  • 0

يوجد طريقتين:

الأولى عن طريق الصنف faker المعرف مسبقا في لارافيل:

<?php

/* @var $factory \Illuminate\Database\Eloquent\Factory */ 

use App\Product; 
use Faker\Generator as Faker; 
$factory->define(Product::class, function (Faker $faker) {
    return [
        'name' => $faker->word,
        'short_description' => $faker->sentence,
        'description' => $faker->paragraph,
        'category_id' => function () {
            return factory(App\Category::class)->create()->id;
        }, 
        'amount' => $faker->randomFloat(2, 0, 10000),
        'image' => $faker->image('public/storage/images',640,480, null, false),

    ];
});

حيث كما نلاحظ أن السطر التالي هو الذي قام بتشكل الصور:

'image' => $faker->image('public/storage/images',640,480, null, false),

أو:

$factory->define(Post::class, function (Faker $faker) {
    return [
          'image'=>'https://source.unsplash.com/random',

    ];
});

لإضافة أبعاد محددة للصور نضيف القيمة التالية للمسار  600*800/random/~

الطريقة الثانية عن طريق استخدام الموقع lorempixel:

<img src="http://lorempixel.com/400/200/sports/" />

هنا يمكنك عمل كود php بسيط يشكل أرقام عشوائية أو تسلسلية وحشر الروباط في قاعدة البيانات.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

لا نقوم ببذر الصور و إنما أسماء هذه الصور أو المسار الخاص بها بعد رفعها في التطبيق.

على سبيل المثال نريد بذر مجموعة من المُستخدمين 5 حيث لكل مُستخدم صورة و ملف التهجير الخاص بالمُستخدمين يحتوي على حقل صورة بهذا الشكل:

<?php

$table->string('image')->default('default.jpg');

نقوم برفع الصور إلى ملف public و نضعها في مُجلد images و لتكن الصور بالأسماء التالية مثلاً

1.png
2.png
3.png
4.png
5.png

لدينا factory خاص بالنموذج User لإنشاء مُستخدم. و قمنا أيضاً بإنشاء Seeder خاص بالمستخدمين في ملف البذر نقوم بالتالي:

<?php

public function run()
{

  $images = array(
    '1.png', '2.png', '3.png', '4.png', '5.png'
  );

  foreach($images as $image) {
    User::factory()->create(['image' => $image]);
  }
}

عند تنفيذ أمر البذر سيتم إنشاء 5 مُستخدمين و لكل مُستخدم صورة من الصور التي رفعناها في المُجلد images. حيث للمُستخدم الأول بيانات عشوائية يتم تمريرها عن طريق الfactory أما في الحقل image فسيتم تخزين إسم الصورة png.1 و هكذا بالنسبة لبقية المٌستخدمين.

أظن أن طريقة إستخدام الfactories في الإصدار السابع مُختلفة عن الإصدار الثامن لذلك بدل كتابة:

User::factory()->create(['image' => $image]);

نكتب:

factory(App\User::class)->create(['image' => $image]);

يعني ملف بذر المُستخدمين يُصبح كالآتي:

<?php

public function run()
{

  $images = array(
    '1.png', '2.png', '3.png', '4.png', '5.png'
  );

  foreach($images as $image) {
    factory(App\User::class)->create(['image' => $image]);
  }
}

و بالتالي الآن عند عرض صورة المُستخدم يُمكننا إستخدام

<img src="{{asset('images/'. $user->image)}}" alt="user image">

أو 

<img src="{{asset('images/'. auth()->user()->image)}}" alt="user image">

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...