سلام
میشه توی لاراول،یک موجودیت زیر مجموعه یک موجودیت دیگه باشه و از طرفی خودش زیر مجموعه داشته باشه
مثلا یک کتگوری ،چند تا زیر کتگوری داشته باشه و هر زیرکتگوری، چند تا پست داشته باشه
من اینو پیاده سازی کردم ولی ارور میده
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);
}
}
داخل مدل دسته بندی هات اینو بنویس
public function child()
{
return $this->hasMany(Pcategory::class, 'parent', 'id');
}
public function products()
{
return $this->belongsToMany(Product::class);
}
روابط اینطوری بنویس بی نهایت فرزند برای فرزند و برای فرزند میتونی تعریف کنی
ولی باید در دیتا بیس برای هر کتگوری یک ستون parent قرار بردی
بله مشکلی نیست.
برای دسته بندی ها و زیردسته هاشون فقط یک جدول لازم هست. و کافیست یک فیلد به اسم مثلا parent تعریف کنی در جدول که برای دسته بندی های والد مقدار صفر بگیر و برای فرزندان آیدی والدش رو دریافت کنه. و بعد در مدل مربوط به دسته بندی ارتباط یک به چند برای دسته و زیردسته بنویسی.
public function child()
{
return $this->hasMany(Category::class,'parent','id');
}
این رو پیاده سازی کردم ولی ارور میده با جدولی به اسم categoryid وmodelid
ببینید هر "مای مدل" متعلق به یک "کتگوری" هست و هر "پروداکت" متعلق به یک "مای مدل" هست
دوستان مشکل رو پیدا کردم
گرفته بودم یک مدل رو برای یک پست انتخاب کرده بودم بعد خود مدل رو پاک کرده بودم، برای همین موقع نمایش، نال بر میگردوند...
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟