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

时间:2017-04-18 02:56:52

标签: php laravel laravel-5.3

我有3个表:import copy ia = iter(a) for ai in ia: print(ai) for ai in copy.copy(ia): print(ai) # [1] # [2] # [3] # [2] # [3] # [3] postsvotes。我已经用Eloquent编写了一个简洁的代码来检索用户尚未投票的帖子。

users

但我也希望从表用户中检索用户名。我想用json传递数据。

如果我尝试使用查询构建器,则很难消除用户已经投票的帖子。

1 个答案:

答案 0 :(得分:1)

您可以手动连接到用户表

$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模型类中定义relationship

public function user()
{
   return $this->belongsTo('App\User');
}

然后使用with('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();