با سلام
من در کار با 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 ())
مشکل رو متوجه شدم.
راه حل اون خیلی عجیب و دور از انتظاربود
من در متد __construct
مدل Provinces
دستور زیر را فراخوانی نکرده بودم:
parent::__construct($attributes);
در واقع متد constructor مدل من باید به صورت زیر باشد.
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
}
با سلام
این مشکل نباید اصلا پیش بیاد و اصلا هم نباید به این راه حل نیاز باشه
شما در مدل خودتون از fillable استفاده کردید ؟
بله استفاده کرده بودم. اما مشکل حل نشده بود. اما وقتی متغیر attributes رو به constructor کلاس والد پاس دادم مشکل حل شد.
البته الزاما نیازی نیست که در مدل مورد نظر constructor نوشته بشه. اما اگر نوشته بشه باید حتما constructor کلاس والد فراخوانی بشه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟