مهراب تاجیک
3 سال پیش توسط مهراب تاجیک مطرح شد
4 پاسخ

روابط در لاراول

سلام
میشه توی لاراول،یک موجودیت زیر مجموعه یک موجودیت دیگه باشه و از طرفی خودش زیر مجموعه داشته باشه
مثلا یک کتگوری ،چند تا زیر کتگوری داشته باشه و هر زیرکتگوری، چند تا پست داشته باشه
من اینو پیاده سازی کردم ولی ارور میده

Products.php:

<?php

namespace App\Models;
use Illuminate\Support\Facades\Storage;

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

class Product extends Model
{
    use HasFactory;
    protected $fillable=['title','content','image','mymodel_id','warehouse_id',];

            public function deleteImage(){
                Storage::delete($this->image);
            }

            //blongs to a -model- and -warehouse-

            public function warehouse(){
                return $this->belongsTo(Warehouse::class);
            }

            public function mymodel(){
                return $this->belongsTo(MyModel::class);
            }
}

Category.php:

<?php

namespace App\Models;
use Illuminate\Support\Facades\Storage;

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

class Category extends Model
{
    use HasFactory;
    protected $fillable=['name','description','image'];
    //has many models
    public function mymodels(){
        return $this->hasMany(MyModel::class);
    }

    public function deleteImage(){
        Storage::delete($this->image);
    }

}

MyModel.php:

<?php

namespace App\Models;
use Illuminate\Support\Facades\Storage;

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

class MyModel extends Model
{
    use HasFactory;
    protected $fillable=['name','description','image','category_id'];

            public function deleteImage(){
                Storage::delete($this->image);
            }
            public function category(){
                return $this->belongsTo(Category::class);
            }

            public function products(){
                return $this->hasMany(Product::class);
            }
}

ثبت پرسش جدید
حسین بهرامی
تخصص : برنامه نویس
@hosseindid 3 سال پیش مطرح شد
1

داخل مدل دسته بندی هات اینو بنویس

 public function child()
    {
        return $this->hasMany(Pcategory::class, 'parent', 'id');
    }

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

روابط اینطوری بنویس بی نهایت فرزند برای فرزند و برای فرزند میتونی تعریف کنی
ولی باید در دیتا بیس برای هر کتگوری یک ستون parent قرار بردی


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

بله مشکلی نیست.
برای دسته بندی ها و زیردسته هاشون فقط یک جدول لازم هست. و کافیست یک فیلد به اسم مثلا parent تعریف کنی در جدول که برای دسته بندی های والد مقدار صفر بگیر و برای فرزندان آیدی والدش رو دریافت کنه. و بعد در مدل مربوط به دسته بندی ارتباط یک به چند برای دسته و زیردسته بنویسی.

public function child()
    {
        return $this->hasMany(Category::class,'parent','id');
    }

مهراب تاجیک
تخصص : Full Stack Developer
@mehrabt.pc 3 سال پیش آپدیت شد
0

این رو پیاده سازی کردم ولی ارور میده با جدولی به اسم categoryid وmodelid

ببینید هر "مای مدل‌" متعلق به یک "کتگوری" هست و هر "پروداکت" متعلق به یک "مای مدل‌" هست


مهراب تاجیک
تخصص : Full Stack Developer
@mehrabt.pc 3 سال پیش آپدیت شد
1

دوستان مشکل رو پیدا کردم
گرفته بودم یک مدل رو برای یک پست انتخاب کرده بودم بعد خود مدل رو پاک کرده بودم، برای همین موقع نمایش، نال بر میگردوند...


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

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