Как узнать, что статья добавлена в закладки?

Таблицы:

posts
users

posts_user - промежуточная - закладки
$table->bigIncrements('id');
$table->integer('user_id');
$table->integer('post_id');


Вывожу все статьи

$allPosts = Posts::with('users')->get();

class Posts extends Model
{ 
    //получить автора статьи
    
    public function users()
    {
        return $this->hasMany('App\User', 'id', 'user_id');
    }


Не знаю, что надо сделать, что бы к запросу ещё добавить ключ, что бы
в цикле потом выводить, что статья уже добавлена, иначе добавить в закладки.
  • Вопрос задан
  • 510 просмотров
Пригласить эксперта
Ответы на вопрос 1
@jazzus
В контроллере
$id = Auth::id();
//К каждой статье добавляем users_count, 
//чтобы узнать какие статьи уже добавлены в избранное авторизованного юзера
// и не делать потом запросы к бд в цикле
$posts = Post::with('users')
           ->withCount(array('users' => function($query) use ($id) {
           $query->where('users.id', $id);
           }))->get();

В шаблоне
{{-- если количество больше нуля, значит статья уже добавлена в избранное --}}
@foreach ($posts as $post)
  @if ($post->users_count>0)
    Уже добавлено в избранное
  @else
    Добавить в избранное
  @endif
@endforeach

Исправить отношение в модели Post
public function users() {
  return $this->belongsToMany('App\User', 'posts_user', 'post_id', 'user_id');
}

Добавлять в избранное через attach. Как это делается
Ответ написан
Ваш ответ на вопрос

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

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