Php 如何在Laravel Eloquent中从另一个表检索行?
我有3个表格: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
帖子
,投票
和用户
。我已经写了一个简洁的代码,能够很好地检索用户尚未投票的帖子
$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();
但是,如果我想检索相对于当前用户的帖子,该怎么办呢。所以现在它删除了已经投票的帖子。但是我想删除当前用户以前投票过的帖子。