Bodman
Bodman

Reputation: 91

Laravel 5.7: Database query returning no values

I'm trying to retrieve a group of post IDs from my likes table where the user ID is equal to the ID stored in the Auth Session.

So far I have tested retrieving data in multiple ways, if I select all the likes from the table it works fine, the auth ID retrieved from the session is the same as the one stored in the likes table so should produce a match and return data.

Here's the code I'm currently working with:

    public function index()
    {

    $userid = Auth::id();

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

    dd($userLikes);

    }

The columns names within the table are as follows:

I have tried this method of writing the query however am experiencing the same issue, no errors and no data.

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

I am looking to have an array of post ids for the posts liked by the logged in user so that it can be passed into the view.

Thanks in Advance

Upvotes: 2

Views: 168

Answers (1)

Brian Lee
Brian Lee

Reputation: 18187

If you've created User, Post, and Like models with the appropriate relationships, you can do the following:

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

The model's would have relations defined as:

// 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);
}

Alternatively, using the query builder:

DB::table('likes')->where('user_id', auth()->id())->get('post_id')->toArray(); 

Upvotes: 1

Related Questions