【问题标题】:Laravel defining relationshipLaravel 定义关系
【发布时间】:2018-05-05 18:19:22
【问题描述】:

我还是 laravel 新手

我有以下表格

user
   id
   first_name
   last_name

educations
  id,
  user_id  //references user id
  type

现在在我的user 模型中,我想获得一个特定的用户教育,可以是很多

所以一个用户可以拥有许多教育,但每个教育都属于一个用户。 所以在我的user 模型中,我有

public function education()
{
    return $this->hasMany('App\ApplicantEducation','id','user_id');
}

在我的Education 模型中,我有

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

但上述失败,我无法检索 user 特定的educations

我哪里错了?

【问题讨论】:

    标签: php database laravel orm


    【解决方案1】:

    你应该试试这个:

    教育模式

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

    用户模型

    public function education()
    {
        return $this->hasMany('App\ApplicantEducation');
    }
    

    【讨论】:

      【解决方案2】:

      这里,

        $this->hasMany('App\ApplicantEducation','id','user_id');
      

      在上面的语句中,第一个参数应该是模型,第二个应该是外键,第三个是来自教育模型的任何其他键。 这里,第二个和第三个参数不是强制性的。

      在用户模型中

      class User...{
      public function education()
      {
      return $this->hasMany('App\ApplicantEducation');
      }
      

      在教育模式中

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

      在这里,附加参数不是强制性的,可能是您的附加参数会产生问题,

      现在您可以使用 Education by 检索您的用户

       $user = User::with('education')->get();
      

      这可以检索所有受过教育的用户。
      希望对你有帮助,谢谢,编码愉快。

      【讨论】:

        【解决方案3】:

        更改return $this->hasMany('App\ApplicantEducation','id','user_id'); 对于return $this->hasMany('App\ApplicantEducation','user_id', 'id');,您还可以省略iduser_id


        由于你的foreign_key格式正确,你也可以重写这个简单的代码,

        class User{
            public function education()
            {
                return $this->hasMany('App\ApplicantEducation');
            }
        }
        
        
        Class Educations{
           public function user()
           {
                return $this->belongsTo('App\User');
           }
        }
        

        【讨论】:

          【解决方案4】:

          试试这个:
          User模特:

          public function educations()
              {
              return $this->hasMany('App\ApplicantEducation', 'user_id');
              }
          

          Education模特:

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

          【讨论】:

            猜你喜欢
            • 2017-01-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-10-16
            • 2021-07-30
            • 2017-01-19
            相关资源
            最近更新 更多