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

السؤال

نشر (معدل)

قمت بتحديث أحد مشاريعي القديمة من لارافيل Laravel الإصدار 6 إلى الإصدار 8 لتجربة المميزات الجديدة، ولكن عندما حاولت أن أستعمل ميزة factories الجديدة لتوليد البيانات في نموذج Model قاعدة البيانات ظهر لي الخطأ التالي:

PHP Error:  Class 'Database/Factories/ProfileFactory' not found in ...

لم أفهم سبب المشكلة، بالرغم من أن الكود سليم ولا أرى به مشكلة:

<?php

namespace Database\Factories;

use App\Profile;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class ProfileFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = Profile::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'name' => "testing"
        ];
    }
}

كود النموذج Profile:

<?php

namespace App;

use Database\Factories\ProfileFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Profile extends Model
{
    use HasFactory;
}

ما سبب المشكلة هنا؟ وكيف أصلح هذا الخطأ في لارافيل Laravel؟

تم التعديل في بواسطة Emad Saif

Recommended Posts

  • 1
نشر

الفكرة هي أن هذا الموضوع نفسه قد تم وصفه في دليل التحديث الخاص بلارافيل 8 من نسخ سابقة كتحديث عال التأثير High Likelihood Of Impact لأن منشئات البذرة database seeders و معامل النماذج model factories ابتداءا من هاته النسخة عرفت ضمن نطاقات اسماء namespaces . اذ تقوم لارافيل بالتعرف عليها وتحميلها تلقائيا من ملف composer.json عن طريق معيار psr-4 وهو احد معايير التحميل التي شاع استخدامها في لارافيل. 

لفعل ذلك، أضف تعيينات نطاقات الاسماء الجديدة ضمن كائن psr-4 في autoload:

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Database\\Factories\\": "database/factories/",
        "Database\\Seeders\\": "database/seeders/"
    }
},

وبالطبع لا تنسى ازالة كائن classmap من autoload:

"classmap": [
     "database/seeds",
     "database/factories"
]

استفد اكثر من هاته الاجابة 

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...