Laravel 4.1急切加载

The*_*ren 6 php eager-loading laravel-4

我在急切的装载上遇到了麻烦.假设我有会员模型,TrainingCategory,TrainingCategoryResult和Registration

会员型号:

public function registration() {
    return $this->hasMany('Registration', 'member_id');
}
public function trainingResults(){
    return $this->hasMany('trainingResult', 'member_id');
}
public function trainingCategoryResults() {
  return $this->hasMany('TrainingCategoryResult', 'member_id');
}
Run Code Online (Sandbox Code Playgroud)

TrainingCategory模型:

public function trainings() {
    return $this->hasMany('Training', 'id');
}
public function trainingCategoryResults() {
    return $this->hasMany('trainingCategoryResult', 'category_id');
}
Run Code Online (Sandbox Code Playgroud)

TraningCategoryResult模型:

  public function category() {
        return $this->belongsTo('TrainingCategory', 'id');
  }
  public function member() {
        return $this->belongsTo('Member', 'id');
  }
Run Code Online (Sandbox Code Playgroud)

注册模式:

  public function course() {
    return $this->belongsTo('Course', 'course_id');
  }
  public function member() {
    return $this->belongsTo('Member', 'id');
  }
Run Code Online (Sandbox Code Playgroud)

我试图加载所有注册信息及其相关信息,包括TraningCategoryResult信息,但我不知道如何获得需要两个外键(category_id和member_id)的TraningCategoryResult,有什么方法可以做到这一点?

这是我的代码atm:

 $members= Member::where(function($query) use ($id, $site) {
    $query
    ->where('id', '=', $id)
    ->where('site', '=', $site);
  });

 $members= $members
  ->with('registration.course',
  'registration.course.traningCategories',
  ->get(['member.id']);
Run Code Online (Sandbox Code Playgroud)

谢谢.

小智 0

这是行不通的 Member::with('categoryResult')->with('registration')->get()

您可以在会员模型中建立新的关系

public function categoryResult()
{
    return $this->belongsTo('Category')->with('Registration');
}
Run Code Online (Sandbox Code Playgroud)

//然后调用

成员::with('categoryResult')->get();