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

السؤال

Recommended Posts

  • 0
نشر

يمكن تلخيص الية إنشاءها وفق الخطوات التالية , سنقوم بتعريف العلاقة كمثال بين النموذجين Category و Product : 

  1. بداية نحتاج إنشاء الجداول و النماذج المراد إنشاء العلاقة بينهما : 
    php artisan make:model Category -m
    php artisan make:model Product -m

     

  2. سنحتاج أيضا إنشاء جدول وسيط لتحقيق منطق العملية . بحيث يجب أن يتكون اسم الجدول الوسيط من أسماء فردية لكلا الجدولين ، مفصولة برموز شرطة سفلية ، ويجب ترتيب هذه الأسماء بترتيب أبجدي ، لذلك يجب أن يكون لدينا category_product ، وليس product_category :

    php artisan make:migration create_category_product_table

     

  3. بعد ذلك سنحتاج التأكد من تعريف الحقول اللازمة في ملف تهجير هذا الجدول الوسيط , بحيث يجب أن يمتلك حقلا أجنبيا يعبر عن عمود المعرف id في كلا الجدولين : products و categories :

public function up()
    {
        Schema::create('category_product', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('category_id')->unsigned();
            $table->integer('product_id')->unsigned();
        });
    }

   4. تنفيذ أمر التهجير : 

php artisan migrate

   5. تعريف العلاقات في ملفات النماذج : 

بداخل ملف النموذج Product.php :

class Product extends Model
{
    public function categories()
    {
        return $this->belongsToMany(Category::class);
    }
}

و أيضا بداخل ملف النموذج Category.php : 

class Category extends Model
{
    public function products()
    {
        return $this->belongsToMany(Product::class);
    }
}

  6. ثم كخطوة أخيرة لن يكون علينا إلا احترام العلاقة عند إنشاء أي صفوف بقواعد البيانات و القراءة عن طريق العلاقتين products و categories .

$productsOfXCategory = Category::find($ID)->products;


$categoriesOfXProduct = Product::find($ID)->categories;

  

 

  • 0
نشر
بتاريخ 20 دقائق مضت قال Adnane Kadri:

يمكن تلخيص الية إنشاءها وفق الخطوات التالية , سنقوم بتعريف العلاقة كمثال بين النموذجين Category و Product : 

  1. بداية نحتاج إنشاء الجداول و النماذج المراد إنشاء العلاقة بينهما : 
    
    php artisan make:model Category -m
    php artisan make:model Product -m

     

  2. سنحتاج أيضا إنشاء جدول وسيط لتحقيق منطق العملية . بحيث يجب أن يتكون اسم الجدول الوسيط من أسماء فردية لكلا الجدولين ، مفصولة برموز شرطة سفلية ، ويجب ترتيب هذه الأسماء بترتيب أبجدي ، لذلك يجب أن يكون لدينا category_product ، وليس product_category :

    
    php artisan make:migration create_category_product_table

     

  3. بعد ذلك سنحتاج التأكد من تعريف الحقول اللازمة في ملف تهجير هذا الجدول الوسيط , بحيث يجب أن يمتلك حقلا أجنبيا يعبر عن عمود المعرف id في كلا الجدولين : products و categories :


public function up()
    {
        Schema::create('category_product', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('category_id')->unsigned();
            $table->integer('product_id')->unsigned();
        });
    }

   4. تنفيذ أمر التهجير : 


php artisan migrate

   5. تعريف العلاقات في ملفات النماذج : 

بداخل ملف النموذج Product.php :


class Product extends Model
{
    public function categories()
    {
        return $this->belongsToMany(Category::class);
    }
}

و أيضا بداخل ملف النموذج Category.php : 


class Category extends Model
{
    public function products()
    {
        return $this->belongsToMany(Product::class);
    }
}

  6. ثم كخطوة أخيرة لن يكون علينا إلا احترام العلاقة عند إنشاء أي صفوف بقواعد البيانات و القراءة عن طريق العلاقتين products و categories .


$productsOfXCategory = Category::find($ID)->products;


$categoriesOfXProduct = Product::find($ID)->categories;

  

 

شكرا لك ولكن لم افهم الخطوة السادسة

  • 0
نشر
بتاريخ 53 دقائق مضت قال Hafsa Aly:

شكرا لك ولكن لم افهم الخطوة السادسة

تعبر الخطوة السادسة عن طريقة القراءة بإستعمال هاته العلاقة فقط , ففي المثالين تم على الترتيب جلب :

  • المنتجات التي تخص الفئة X . 
  • الفئات التي تخص المنتج Y .  

مثال : 

  • المنتجات التي تخص الفئة "ملابس رجالية" .
  • الفئات التي تخص المنتج "تيشرت أزرق" .

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...