ARON
3 سال پیش توسط ARON مطرح شد
2 پاسخ

ارتباط جداول برای wishlist

من یه جدول wishlist دارم با ساختار زیر

            $table->id();
            $table->unsignedBigInteger('product_id');
            $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
            $table->unsignedBigInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->timestamps();

این مدل wishlist

class Wishlist extends Model
{
    protected $fillable = [
        'product_id',
        'user_id',
    ];

    public function user()
    {
        return $this->belongsTo(User::class);
    }

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

میخوام با این کد محصولات مورد علاقه هر کاربر رو بگیرم ولی به ارور میخورم

auth()->user()->wishlist()->products;
ErrorException
Undefined property: Illuminate\Database\Eloquent\Relations\HasMany::$product
https://ansolin.com/profile/wishlist

ثبت پرسش جدید
Ali
@411proplayer 3 سال پیش آپدیت شد
0

باید ریلیشن شیب چند به چند درست کنید چون هر یوزر ممکنه چنتا محصول داشته باشه و هر محصول ممکنه چنتا یوزر اونا نتخاب کرده باشن تو ویش لیست
User Model

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

Product Model

public function usersWhoLikedThisProduct() {
    return $this->belongsToMany(User::class,'wishlist');
}

رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 3 سال پیش مطرح شد
1

سلام.
اولین نکته ای که باید بهش توجه کنید، درک درست از روابط هست.
هر محصول میتونه توسط چند کاربر انتخاب بشه و هر کاربر میتونه چند محوصل رو انتخاب کنه، پس رابطه شما میشه چند به چند.
حالا باید در مدل های خود روابط رو به صورت زیر بنویسید.
مدل Product:

public function users() {
    return $this->belongsToMany(User::class);
}

مدل User:

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

موفق باشید.


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

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