Laravel定义关系

时间:2017-11-22 05:31:05

标签: php database laravel orm

仍然是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');
}

但上述操作失败,我无法检索用户特定的教育

我哪里错了?

4 个答案:

答案 0 :(得分:1)

更改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');
   }
}

答案 1 :(得分:1)

试试这个:
User模型:

public function educations()
    {
    return $this->hasMany('App\ApplicantEducation', 'user_id');
    }
<{1>}模型中的

Education

答案 2 :(得分:1)

在这里,

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

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

在用户模型中

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

教育模式

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

此处,其他参数不是强制性的,可能是您的添加参数创建问题,

现在您可以通过

来检索您的用户
 $user = User::with('education')->get();

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

答案 3 :(得分:1)

你应该试试这个:

教育模式

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

用户模型

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