Laravel 5.7:数据库查询不返回任何值

时间:2018-12-29 01:36:13

标签: php laravel eloquent laravel-5.7

我正在尝试从我的点赞表中检索一组帖子ID,其中用户ID等于存储在Auth Session中的ID。

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

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

    public function index()
    {

    $userid = Auth::id();

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

    dd($userLikes);

    }

表中的列名称如下:

  • id
  • created_at
  • updated_at
  • user_id
  • post_id

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

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

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

预先感谢

1 个答案:

答案 0 :(得分:1)

如果您创建了具有适当关系的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();