在Laravel中,如何从3个表的一个查询中获取数据

时间:2018-08-13 06:27:54

标签: php laravel

我有3张桌子

first table : language
2nd table : user_language 
3rd table : user 

在user_language表中,我存储了所有用户的language_id,它可以是多个。

user_language Table 

user  language_id 
9         5  
13       10
17        8
17        3

language_table 
id     language
5      english
10     hindi
8      Tamil
3      Gujrati

user table 
id   name
9    amit
3    john
17    aman

我的问题是在laravel中如何在一个查询中获得所有用户语言。查询应该在laravel中。

3 个答案:

答案 0 :(得分:1)

在这种情况下,您要做的就是编写如下内容:

用户模型摘要:

public function languages() {
    return $this->belongsToMany(Language::class);
}

语言模型片段

public function users() {
    return $this->belongsToMany(User::class);
}

您需要在顶部导入课程

,您可以获取用户语言,例如

针对特定用户 User::with('languages')->where('id', $userId)->first();

并针对所有用户

User::with('languages')->get();

答案 1 :(得分:0)

使用多对多关系。

在用户模型中:

public function languages()
    {
        return $this->belongsToMany('Language_Model', 'user_language', 'user', 'language_id');
    }

您可以使用以下语言访问语言:

$user->languages

请阅读laravel many-to-many文档,因为它具有有关多对多关系的清晰信息。

此外,您可以在这里查看basic多对多关系的用法。

答案 2 :(得分:0)

使用数据透视关系。

数据透视关系对于使用外键的两个表连接非常有用。

请参阅下面的链接。

Pivot Relationship