Laravel 5.7: запрос к базе данных не возвращает значений - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь получить группу идентификаторов сообщений из моей таблицы лайков, где идентификатор пользователя равен идентификатору, сохраненному в сеансе аутентификации.

До сих пор я тестировал получение данных несколькими способами,если я выберу все лайки из таблицы, все будет работать нормально, идентификатор аутентификации, полученный из сеанса, будет таким же, как и тот, который хранится в таблице лайков, поэтому должен выдавать совпадения и возвращать данные.

Вот код, с которым я сейчас работаю:

    public function index()
    {

    $userid = Auth::id();

    $userLikes = likes::all()->pluck('post_id')->where('user_id', $userid);

    dd($userLikes);

    }

Имена столбцов в таблице следующие:

  • id
  • creat_at
  • updated_at
  • user_id
  • post_id

Я пробовал этот метод написания запроса, но возникла та же проблема, без ошибоки нет данных.

DB::table('likes')->pluck('post_id')->where('user_id', $userid)->toArray(); 

Мне нужен массив идентификаторов постов, которые понравились зарегистрированному пользователю, чтобы их можно было передать в представление.

Заранее спасибо

1 Ответ

0 голосов
/ 29 декабря 2018

Если вы создали User, Post и Like модели с соответствующими отношениями, вы можете сделать следующее:

$ids = auth()->user()->likes->pluck('post_id')->toArray();

У моделей будут отношения, определенные как:

// User.php
public function likes()
{
    return $this->hasMany(Like::class);
}

public function posts()
{
    return $this->hasMany(Post::class);
}

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

public function post()
{
    return $this->belongsTo(Post::class);
}   

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

public function likes()
{
    return $this->hasMany(Like::class);
}

Также можно использовать построитель запросов:

DB::table('likes')->where('user_id', auth()->id())->get('post_id')->toArray(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...