فرهاد اشتری
7 سال پیش توسط فرهاد اشتری مطرح شد
3 پاسخ

عدم ذخیره مقادیری که در factory ها مشخص می شود

با سلام
من در کار با phpunit می خوام از factory ها برای ذخیره اطلاعات fake در دیتابیس استفاده کنم.
یک نمونه کدی که استفاده کردم این جاست

use FakerGenerator as Faker;

$factory->define(AppProvinces::class, function (Faker $faker) {
    return [
        'name' => $faker->name
    ];
});

اما وقتی تست را ران می کنم در ترمینال به من خطا می دهد. ظاهرا مقدار name را در دستور insert قرار نمی دهد.
دستور insert که در متن خطا می بینم به این صورت است.

SQL: insert into province() values ()

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

General error: 1364 Field 'name' doesn't have a default value (SQL: insert intoprovince() values ())

ثبت پرسش جدید
فرهاد اشتری
@farhadkb6868 7 سال پیش مطرح شد
0

مشکل رو متوجه شدم.
راه حل اون خیلی عجیب و دور از انتظاربود
من در متد __construct مدل Provinces
دستور زیر را فراخوانی نکرده بودم:

 parent::__construct($attributes);

در واقع متد constructor مدل من باید به صورت زیر باشد.

 public function __construct(array $attributes = [])
    {
        parent::__construct($attributes);
    }

حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 7 سال پیش مطرح شد
0

با سلام
این مشکل نباید اصلا پیش بیاد و اصلا هم نباید به این راه حل نیاز باشه
شما در مدل خودتون از fillable استفاده کردید ؟


فرهاد اشتری
@farhadkb6868 7 سال پیش آپدیت شد
0

بله استفاده کرده بودم. اما مشکل حل نشده بود. اما وقتی متغیر attributes رو به constructor کلاس والد پاس دادم مشکل حل شد.
البته الزاما نیازی نیست که در مدل مورد نظر constructor نوشته بشه. اما اگر نوشته بشه باید حتما constructor کلاس والد فراخوانی بشه.


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

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