راکت
حل شده

ایجاد رابطه بین یوزر و مقاله و پست ها بصورت پولی مورفیسم

4 پاسخ

ایجاد رابطه بین یوزر و مقاله و پست ها بصورت پولی مورفیسم برای دریافت پست هایی که یوزر بوکمارک کرده
سلام خسته نباشید. من برای پیاده سازی پست هایی ک یک یوزر بوکمارک کرده این مدل هارو ساختم. یا حتی بخوایم راحت بگیم مدل پیاده سازی مقاله هایی که یوزر لایک کرده هم به این صورت هست.
مدل های من به این شکل هستن:


User 
Bookmark
Post
Article

که خب شمای دیتابیس به این شکل هست:


posts
    id - integer
    name - string

articles
    id - integer
    name - string

users
    id - integer
    name - string

bookmarkables
    bookmark_id - integer
    bookmarkable_id - integer
    bookmarkable_type - string

توی مدل یوزر به این شکل عمل کردم
User.php


public function bookmarks()
    {
        return $this->morphMany(Bookmark::class, 'bookmarks', 'bookmarkable_type','user_id');
    }

و مدل Bookmark:


 public function bookmarkable()
    {
        return $this->morphTo();
    }

    public function articles()
    {
        return $this->belongsTo(Article::class ,'bookmarkable_id','id');
    }

و به این شکل میخوام که بوکمارک های پست رو بگیرم


$articles  = auth()->user()->bookmarks;
dd($articles);
ثبت پرسش جدید

پاسخ‌ها

4
محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

بهترین پاسخ
متین نوروزی
متین نوروزی
@matinwd

تخصص: Backend Developer - Laravel and vuejs

@ali.bayat
@hesammousavi
@mohsenbostan

خیلی خوشحال میشم اگه راهنمایی کنین که ایا کاری که دارم میکنم براش درست هست یا نه. ممنونم از شما

محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

@matinwd
سلام.
کارتون مشکلی نداره و کاملا منطقی هم هست.

شاید پاسخ شما همین‌جا باشد

متین نوروزی
متین نوروزی
@matinwd

تخصص: Backend Developer - Laravel and vuejs

@mohsenbostan
ممنون از جوابتون. ولی خب کار نمیده. و توی این گروه های خارجی میگن که اصلا نیازی به مدل برای بوکمارک یا لایک ندارید.
توی استک اورفلو هم پرسیدم گفتن که برای متود articles توی خود مدل Bookmark باید متود morphedByMany استفاده کنید که اون رو هم استفاده کردم و ارور داد بهم.

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

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