Php 如何在Laravel Eloquent中从另一个表检索行?

Php 如何在Laravel Eloquent中从另一个表检索行?,php,laravel,laravel-5.3,Php,Laravel,Laravel 5.3,我有3个表格:帖子,投票和用户。我已经写了一个简洁的代码,能够很好地检索用户尚未投票的帖子 $posts = Post::whereDoesntHave("votes") ->where('user_id', '=', $user_id) ->whereBetween('posts.created_at', array(Carbon::now()->subHours(48), Carbon::now

我有3个表格:
帖子
投票
用户
。我已经写了一个简洁的代码,能够很好地检索用户尚未投票的帖子

$posts = Post::whereDoesntHave("votes")
                    ->where('user_id', '=', $user_id)
                    ->whereBetween('posts.created_at', array(Carbon::now()->subHours(48), Carbon::now()))
                    ->take(20)
                    ->get();

return response()->json(['posts' => $posts])->withCallback($request->input('callback')); 
但我还想从表用户中检索用户名。我想用json传递数据


如果我尝试使用query builder,则很难删除已经由用户投票的帖子。

您可以手动连接到用户表

$posts = Post::join('users', 'users.id', '=', 'posts.user_id')
                ->whereDoesntHave("votes")
                ->where('user_id', '=', $user_id)
                ->whereBetween('posts.created_at', array(Carbon::now()->subHours(48), Carbon::now()))
                ->take(20)
                ->get();
或者您可以在
Post
model类中定义一个

public function user()
{
   return $this->belongsTo('App\User');
}
然后使用
和('user')
从用户表中检索数据

$posts = Post::with('user')
                ->whereDoesntHave("votes")
                ->where('user_id', '=', $user_id)
                ->whereBetween('posts.created_at', array(Carbon::now()->subHours(48), Carbon::now()))
                ->take(20)
                ->get();

但是,如果我想检索相对于当前用户的帖子,该怎么办呢。所以现在它删除了已经投票的帖子。但是我想删除当前用户以前投票过的帖子。