首页 > 解决方案 > Laravel 5.7:数据库查询不返回值

问题描述

我正在尝试从我的 likes 表中检索一组帖子 ID,其中用户 ID 等于存储在身份验证会话中的 ID。

到目前为止,我已经以多种方式测试了检索数据,如果我从表中选择所有喜欢它工作正常,从会话中检索到的身份验证 ID 与存储在喜欢表中的身份相同,因此应该产生匹配并返回数据.

这是我目前正在使用的代码:

    public function index()
    {

    $userid = Auth::id();

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

    dd($userLikes);

    }

表中的列名如下:

我已经尝试过这种编写查询的方法,但是遇到了同样的问题,没有错误也没有数据。

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

我希望为登录用户喜欢的帖子提供一组帖子 ID,以便可以将其传递到视图中。

提前致谢

标签: phplaraveleloquentlaravel-5.7

解决方案


如果您已创建UserPostLike具有适当关系的模型,则可以执行以下操作:

$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(); 

推荐阅读