【发布时间】:2015-05-20 11:23:51
【问题描述】:
我在急切加载时遇到问题。 假设我有 Member、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');
}
TrainingCategory 模型:
public function trainings() {
return $this->hasMany('Training', 'id');
}
public function trainingCategoryResults() {
return $this->hasMany('trainingCategoryResult', 'category_id');
}
TraningCategoryResult 模型:
public function category() {
return $this->belongsTo('TrainingCategory', 'id');
}
public function member() {
return $this->belongsTo('Member', 'id');
}
注册模式:
public function course() {
return $this->belongsTo('Course', 'course_id');
}
public function member() {
return $this->belongsTo('Member', 'id');
}
我正在尝试加载所有注册信息及其相关信息,包括 TraningCategoryResult 信息,但我不确定如何获取需要两个外键(category_id 和 member_id)的 TraningCategoryResult,有什么办法吗?
这是我的自动取款机代码:
$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']);
谢谢。
【问题讨论】:
-
我不知道我是否理解正确,但是你为什么不能加入呢?类似 Member::with('categoryResult')->with('registration')->get() 或 Member::with(array('categoryResult', 'registration'))->get() (它的伪代码,不知道它是如何工作的)
-
这行得通吗?
Registration::with('member.trainingCategoryResults')->get();
标签: php laravel-4 eager-loading