php - 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);
}
表中的列名如下:
- ID
- created_at
- 更新时间
- 用户身份
- post_id
我已经尝试过这种编写查询的方法,但是遇到了同样的问题,没有错误也没有数据。
DB::table('likes')->pluck('post_id')->where('user_id', $userid)->toArray();
我希望为登录用户喜欢的帖子提供一组帖子 ID,以便可以将其传递到视图中。
提前致谢
解决方案
如果您已创建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();