如何在laravel 5.3中使用eloquent从多个表中获取数据?

时间:2016-10-21 06:42:08

标签: laravel laravel-5.3

我想在laravel 5.3中构建这样的查询

SELECT p.post_text, p.bbcode_uid, u.username, t.forum_id, t.topic_title, t.topic_time, t.topic_id, t.topic_poster
FROM phpbb_topics t, phpbb_posts p, phpbb_users u
WHERE t.forum_id = 9
AND p.post_id = t.topic_first_post_id
AND u.user_id = t.topic_poster
ORDER BY t.topic_time
DESC LIMIT 10

1 个答案:

答案 0 :(得分:2)

例如,考虑有两个表,一个是用户,另一个是帖子

创建迁移时将user_id外键添加到posts表中

$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

创建用户发布模型,并在用户模型中定义与发布的关系为

public function post(){
    return $this->hasMany(Post::class);
}

并在帖子模型中定义与用户模型的关系

public function user(){
    return $this->belongsTo(User::class);
}

现在您可以从Post模型中获取用户

$post = Post::findOrFail(1);
return $post->user;