Laravel 5.6 |雄辩的一对多关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 5.6 |雄辩的一对多关系相关的知识,希望对你有一定的参考价值。

我正在学习php和laravel。我正在为一家公司做一次测试,如果我通过,我可以考虑加入开发团队。 crud测试的要求之一是成员(主要对象)可能有多种语言选项列表中的一种语言。显然,一种语言可以链接到多个成员。

因此,如果我正确读取了laravel文档,将自动设置主模型(Member)和辅助模型(Language)之间的外键。我的问题是如何在逻辑上建立关系。

我的成员表中的一列是language_id列,而languages表由id(显然)和语言名称组成。

根据示例,关系应该看起来像这样:

会员型号:

class Member extends Model 
{ 
   public function language() 
   { 
      return $this->hasMany('AppLanguage'); 
   } 
}

语言模型:

class Language extends Model 
{ 
   public function member() 
   { 
      return $this->belongsTo('AppMember'); 
   } 
}

但这有意义吗?会员模型基本上是说会员可以有多种语言。但事实并非如此。该会员只能使用1种语言。

你能帮我解释一下这个问题。

谢谢

答案

你的关系是对的。

因为一个成员只能有一种语言,所以MemberbelongsTo Language,而不是hasMany Language。因此,LanguagehasMany很多Members。

看到:

  • 简单数据库:

成员:

id | name | language_id | int | var_char | int+nullable | // because member can have no lang

语言

id | name | int | var_char |

  • 关系:

(2个档案)

class Member extends Model 
{ 
   public function language() 
   { 
      return $this->belongsTo('AppLanguage', 'language_id'); 
   } 
}

class Language extends Model 
{ 
   public function members() 
   { 
      return $this->hasMany('AppMember', 'language_id'); 
   } 
}

language_id是这种关系的外键。在这种情况下,使用这个与否不是主人。

然后,当你想要检索成员语言时,只需使用$member->language;并且,当您想要检索具有$language的所有成员时,请使用$language->members

希望这有帮助!

另一答案

你应该创建一个联结模型MemberLanguage(显然这将有一个带有member_id和language_id属性的表),你将拥有member_id和language_id,因此成员模型中你可以拥有的关系是 -

class Member extends Model
 { 
     public function memberLanguage()
      {
         return $this->hasMany('AppMemberLanguage');
      } 
   }

在您的MemberLanguage模型中,您将拥有

class MemberLanguage extends Model 
{ 
   public function member() 
   { 
      return $this->belongsTo('AppMember'); 
   } 

   public function language() 
   { 
      return $this->belongsTo('AppLanguage'); 
   } 
}

以上是关于Laravel 5.6 |雄辩的一对多关系的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.4雄辩的一对多关系

Laravel 雄辩的一对多关系

laravel 雄辩的关系一对多返回 null

Laravel 雄辩的一对一通过(级别/树)关系

#ASK Laravel 深厚的口才关系,来自患者一对多注册一对一综合诊所

理解雄辩的一对多关系