Вывести список избранного?

Подскажите, где ошибся, пытаюсь вывести избранные статьи, но ошибка

Модель статьи
protected $table = 'articles';
    protected $fillable = [
        'title', 'description', 'image','category', 'source','user_id', 'published','moderation', 'slug','view'
    ];
public function favorite()
    {
        return $this->hasOne(Favorite::class, 'content_id')->where('type', '=', 1);
    }

Модель избранное

protected $table = 'favorites';
    protected $fillable = [
      'content_id', 'type', 'user_id','ip','agent'
    ];

    public function article() //Привязываем к модели статья
    {
        return $this->belongsTo(Article::class, 'content_id')->where('type', '=', 1);
    }


сам контроллер

$articles = Favorite::where('user_id', '=', Auth::user()->id)->article()->paginate(15);
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 2
mzcoding
@mzcoding
Web-Разработка
В вашей ошибки же написано, что в классе Illuminate\Database\Eloquent\Builder не найден метод article()
А конструкция
Favorite::where('user_id', '=', Auth::user()->id)
вернет вам объект класса Illuminate\Database\Eloquent\Builder, а вам нужен объект вашей модели
Ответ написан
У вас сильно понапутано с отношениями...
Начнем с того, что вы определили отношение один-к-одному, что есть глупость. Как минимум вам нужно hasMany.
Ну а вообще-то, у вас классическое отношение многие-ко-многим (пользователи-статьи), где "избранное" является промежуточной таблицей (и, кстати, не понимаю зачем вам поле type). Лара позволяет промежуточной сделать любую таблицу. В доках это хорошо описано.
Удачи!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы