راکت

انتقال داده از JSON توسط laravel migration

3 پاسخ

دوستان سلام
چطور میتونم اطلاعات فایل json رو به دیتابیس mysql از طریق فرمان laravel migration انتقال بدم؟
هدف اینه با هر بار php artisan migrate کردن علاوه بر ایجاد جداول ، جدول مورد نظر هم با داده ها پر بشه.
داده الزامی نداره که json باشه.
محتوای داده ها لیست استان ها و شهرهای هر استان هست.
راه دیگری هم اگر پیشنهاد دارید حتما بگید.
متشکرم

ثبت پرسش جدید

پاسخ‌ها

3
حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

بهترین راه برای این جور کارها استفاده از سیدر و فکتوری در لاراول هست
یا میتونید همونجا داخل مایگریشن بعد اینکه جدول ایجاد شد از دستورات insert فساد DB استفاده کنید

محمدسجاد دباغ
محمدسجاد دباغ
@mdabbagh

تخصص: برنامه نویس لاراول

@hosseinshirinegad98
متشکرم از راهنمایی ، من با استفاده از ویدئوهای آموزش seeder و factory داده های fake تولید کردم در جدول.

public function definition()
    {
        return [
            'university_name' => $this->faker->name(),
            'university_type' => $this->faker->text(),
            'University_State' => $this->faker->sentence(5),
            'university_city' => $this->faker->text(),
        ];
    }
public function run()
    {
        Universitys::factory()->count(50)->create();
    }

لطفا راهنمایی کنید چطور بجای faker از اطلاعات فایل Json بتونم همشون رو باهم موقع اجرای دستور زیر create کنم.

 php artisan migrate --seed

شاید پاسخ شما همین‌جا باشد

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

سلام فایل جیسان رو باید با php تبدیل به آرایه کنید و بعد دیگه اون ارایه رو پیمایش میکنید و میتونید اینسرت تو جدول رو انجام بدید .به فرض شما یه فایل جیسان در مسیر public پروژه دارید به این صورت میشه عمل کرد.

public function run()
{
    $json = file_get_contents(public_path('json.json'));

    $array = json_decode($json, true);

    foreach ($array as $value) {
        \DB::table('universities')->insert([
            'university_name'  => $value['university_name'],
            'university_type'  => $value['university_type'],
            'University_State' => $value['University_State'],
            'university_city'  => $value['university_city'],
        ]);
    }
}

اینجا چون شما داده از قبل دارید دیگه نیاز به فکتوری ندارید و همین سیدر که ران بشه کافی هست.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام